插入排序
思想:插入排序的思想是先假定a[0]已经排好,然后从a[1]~a[size-1]依次往里面插入。在插入过程中还要倒着插,这样比较省事。如果插入的数比要比较的数大,则放在右边;反之,放在左边。另外,按照上述思路,可能会出现多次调换的情况,处理的办法是先将比较之后要移动的数都往后面移动一位,最后再将要插入的数插入都移动之后出现的空档。这个处理很巧妙,也是插入排序的精华所在!
//给定数组直接插入排序,从小到大排列。
#include <iostream>
using namespace std;
int main(){
int a[]={9,8,7,6,5,4};
for(int i=1;i<sizeof(a)/sizeof(a[0]);i++){
int value=a[i],key=i;
while(key>0&&value<a[key-1]){ //后面的数据偏小
a[key]=a[key-1]; //比它大的都往后移动
key--;
}
//移动完之后出现空档,放入a[i]的临时存储变量value
a[key]=value;
}
for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
cout<<a[i]<<" ";
return 0;
}