您的位置:首页 > 其它

算法导论第二章_插入排序_读书笔记

2011-02-11 16:32 204 查看
#include <iostream>
void InsertSort(int* a, int n)
{
    int key;
    // j赋值为1因为是从第二个元素开始插入排序
    // j<n因为n代表着待排序的数组元素的个数,n-1为最后一个元素
    for (int j=1; j<n; j++)
    {
        key=a[j];  // 等待插入的元素为a[j]
        int i=j-1; // a[0...j-1]为已经有序的部分,a[j+1...n-1]为还没有排序的部分
        // 我们首先要比较的是a[j]与a[j-1]
        while ((i>=0) && (a[i]>key))
        {
            a[i+1]=a[i]; // 所有比a[j]大的元素后移一位
            i--;
        }
        a[i+1]=key;      // 将a[j]放到正确的位置上去
    }
}
int main()
{
    int a[6] = { 5, 2, 4, 6, 1, 3 };
    InsertSort(a, 6);
    for (int i=0; i<6; i++)
    {
        std::cout << a[i] << std::endl;
    }
    return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: