插入排序
简单实现了一下插入排序的算法,针对数组进行排序。
插入排序:针对一个需要排序的数组,我们把它的第一个元素当成已经排好的序列。然后我们从第二个元素开始,一个元素接着一个元素地(见第一个循环,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 }