内部排序-插入式排序

来源:互联网 发布:linux脚本while循环 编辑:程序博客网 时间:2024/04/29 06:40

将要排序的元素通过插入的方式找到其适当的位置来进行排序。

直接上code吧

int g_counter1 = 0;int g_counter2 = 0;void insert_sort(int *list, int len){int i, j, k;int temp;for(i = 1; i < len; i++){temp = list[i];for (j = i - 1; j >= 0; j--){if (temp < list[j]) {list[j + 1] = list[j];list[j] = temp;}g_counter1++;}printf("\n i = %d current state :\n", i);for(k = 0; k < len; k++)printf("%d ", list[k]);}}void insert_sort2(int *list, int len){int i, j, k;int temp;for(i = 1; i < len; i++){temp = list[i];j = i - 1;while (j >= 0 && temp < list[j]){list[j + 1] = list[j];j--;g_counter2++;}list[j+1] = temp;printf("\n i = %d current state :\n", i);for(k = 0; k < len; k++)printf("%d ", list[k]);}}

经过评估,发现第二种写法的效率要高一点。

该方法是一种的稳定的排序方法,空间复杂度为O(1),时间复杂度为O(n^2);

0 0
原创粉丝点击