插入排序的思想:
假设现在有一堆数据,需要排序,我们随便选取一个数据作为第一个元素。然后从剩下的数据里面选一个(称为key)和之前选的第一个元素做比较,按照要求(升序还是降序),把key和第一个元素排好序。这样,这2个元素就是排好序的了。现在从剩下的那一堆数据里面选一个作为新的key,再和之前已经排好序的元素,按照要求放到到合适的位置上。这样,这3个元素就是排好序的了。照此循环,把所有数据就排好序了。
参考代码:
1 //arr:待排序的数组,length:待排序数组的长度 2 void InsertSort(int arr[],int length) 3 { 4 int i,j; 5 int key; //待插入的数 6 for(i = 1; i < length; ++i) 7 { 8 key = arr[i]; 9 j = i - 1; 10 11 // 找到合适的位置,插入key 12 // >:升序 <:降序 13 while( (j >= 0) && (arr[j] > key) ) 14 { 15 arr[j+1] = arr[j]; 16 --j; 17 } 18 arr[j+1] = key; 19 20 } 21 }
时间: 2024-09-17 10:44:07