插入排序

简单实现了一下插入排序的算法,针对数组进行排序。

插入排序:针对一个需要排序的数组,我们把它的第一个元素当成已经排好的序列。然后我们从第二个元素开始,一个元素接着一个元素地(见第一个循环,i从1到len-1)往这个已经排好的序列当中插入“新”的元素,每次插入的时候要保证这个新的元素在这个序列中是有序的(见第二个循环,j从i-1到0)。

版本一:

 1 void
 2 InsertSort(int arr[], int len)
 3 {
 4     for (int i = 1; i < len; i++) {
 5         int tmp = arr[i];
 6         for (int j = i-1; j >= 0 && arr[j] > tmp; j--) {
 7             arr[j+1] = arr[j];
 8             arr[j] = tmp;
 9         }
10     }
11 }

 版本二:版本一的第八行做了多次无意义的赋值,对此版本二做了修正。

 1 void
 2 InsertSort(int arr[], int len)
 3 {
 4     for (int i = 1; i < len; i++) {
 5         int tmp = arr[i];
 6         int j;
 7         for (j = i; j > 0 && arr[j-1] > tmp; j--) {
 8             arr[j] = arr[j-1];
 9         }
10         arr[j] = tmp;
11     }
12 }

 

posted @ 2014-10-26 21:32  nipan  阅读(174)  评论(0编辑  收藏  举报