七大排序算法系列之直接插入排序

来源:互联网 发布:电机数据大全安装尺寸 编辑:程序博客网 时间:2024/04/28 02:01

直接插入排序算法介绍

直接插入排序和简单选择排序类似,都是将数据分成有序区和无序区,直接插入排序将从无序区中的第一个数据直接和有序区的最后一个数据进行比较,直接插入到有序区中。

1.初始时,a[0]是一个有序区,无序区a[1...n-1]。

2.i=1,将a[i]并入当前有序区a[0...i-1]共同形成有序区a[0...i]。例如第一趟,将a[1]和a[0]进行比较,如果小,则交换。

3.如果i<n,则重复上一步,否则排序完成。
a[i]先和前面一个数据a[i-1]比较,如果a[i-1]>a[i],则令temp=a[i],j=i-1。然后一边将数据a[j]向后移动一边向前搜索,当有数据a[j]<temp时停止并将temp放到a[j + 1]处。

实现代码:

void insert_sort_1(int *array,int n){for(int i=1;i<n;i++)if(array[i]<array[i-1]){//如果无序表的第一个比有序表的最后一个大,则仍然是有序表int temp = array[i];//把无序表的第一个元素存起来for(int j=i-1;j>=0&&array[j]>temp;j--)//如果有序中的比无序的大,则交换array[j+1]=array[j];array[j+1]=temp;//如果j=-1,则有序表中的元素都比该元素大,则该元素成为第一元素}}