直接插入排序:把N哥待排序的元素看成一个有序表和一个无序表。起始,有序表中只包含一个元素,无序表中包含N-1个元素,排序过程中每次从无序表中取出第一个元素,将他插入到有序表中的适当位置,使之成为新的有序表,重复N-1次则完成排序。
图解:
代码:
1 void InsertSort( int a[] , int n ) 2 { 3 int i = 0 , j = 0 , k = 0; 4 int temp = 0; 5 6 for( i = 1 ; i < n ; i++ ) 7 { 8 for( j = 0 ; j < i ; j++ ) 9 { 10 if( a[i] < a[j] ) 11 { 12 temp = a[i]; 13 //移位操作 14 for( k = i ; k > j ; k--) 15 { 16 a[k] = a[k-1]; 17 } 18 a[k] = temp; 19 } 20 else 21 continue; 22 } 23 } 24 }