直接插入排序

来源:互联网 发布:现在淘宝开店要交钱吗 编辑:程序博客网 时间:2024/05/16 08:52

基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排

好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数

也是排好顺序的。如此反复循环,直到全部排好顺序。

具体实现代码如下 :

# include <iostream>using namespace std;void swap(int *a ,int *b){int temp;temp=*a;*a=*b;*b=temp;}void insertsort(int * a,int n){for(int i=1;i<n;i++)//当数组只有一个数时,认为是有序的,所以从第二个开始{    int k=i; //由于下面需要交换,用一个临时变量保存I的位置,否则下面从第二次开始比较的便不是第一次的a[i],因为发生了交换for(int j=i-1;j>=0;j--) //第i个和它前面排好的进行比较{   if(a[k]<a[j]){swap(a[k],a[j]);k=j;}}}}int main(){int a[6]={8,6,7,9,4,2};    insertsort(a,6);for(int i=0;i<6;i++)cout<<a[i]<< " ";return 0;}