首页 > 初学者,写的直接插入排序,欢迎大家指出不足哈

初学者,写的直接插入排序,欢迎大家指出不足哈

    //直接插入排序:从左到右依次递增,每一次插入时都从最左边的数开始作比较。
#include <iostream>
using namespace std;

int main()
{
    int arr[6] = {5, 6, 2, 3, 8, 4};
    int temp = 0;
    for(int i = 1; i < 6; i++)//一共需要插入几次数
        for(int j = 0; j < i; j++)//从最左边的数开始比较
        {
            if(arr[j] > arr[i])
                {
                    temp = arr[j];
                    arr[j] = arr[i];
                    for(int k = i-1; k >= j; k--)//从右到左一次把数后移
                    {
                        if(j < k)
                            arr[k+1] = arr[k];
                        else
                            arr[k+1] = temp;
                    }
                }

        }
    for(int i = 0; i < 6; i++)
    {
        cout << arr[i] << ' ';
    }
    return 0;
}

1) for(int i = 1; i < 6; i++)
这个循环最好改成 sizeof(arr)/sizeof(arr[0]) 结果一样是6,但却是编译期的常量值,好处是数组长度变化后,就不用改代码了。
2) swap最好做成一个公用的函数,或者直接来个宏 :-)

【热门文章】
【热门文章】