【GIF动画+完整可运行源代码】C++实现 插入排序——十大经典排序算法之三

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤:

  • 从第一个元素开始,该元素认为已经被排序

  • 取下一个元素,在已经排序的元素序列中从后向前扫描

  • 如果已排序元素大于新元素,将已排序元素移到下一位置

  • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

  • 将新元素插入到该位置后

  • 重复步骤2~5

代码展示

#include <iostream>
 
 using namespace std;

 写法1
void insertSort_0(int arr[], int length)
{
    
    
    int i, j, key;
    for (i = 1; i < length; i++){
    
    
        key = arr[i];
        for (j = i - 1; j >= 0; j--){
    
    
            if (arr[j] > key) {
    
    
                arr[j + 1] = arr[j];
            }
            else
                break;
        }
        arr[j + 1] = key;
    }
}

 写法2
void insertSort_1(int arr[], int length)
{
    
    
    int j, key;
    for (int i = 1; i < length; i++){
    
    
        key = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > key){
    
    
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

int main()
{
    
    
    int iArr[] = {
    
     7, 8, 9, 5, 2, 0, 12, 6 };
    int len = sizeof iArr / sizeof(iArr[0]);

    cout << "排序前:";
    for (int i = 0; i < len; i++)    {
    
    
        cout <<  iArr[i] << " ";
    }

    cout << "\n排序后:";
    insertSort_0(iArr, len);
    for (int j = 0; j < len; j++)    {
    
    
        cout << iArr[j] << " ";
    }
    cout << endl;

    system("pause");
    return 0;
}

日拱一卒,功不唐捐。

猜你喜欢

转载自blog.csdn.net/weixin_43899069/article/details/109150106
今日推荐