数据结构中涉及的排序算法
下面按照课本的分类,做了大致的内排序的归类的图片: 下面我们逐个来实现排序的算法: 一、插入排序算法: 包括:直接插入、折半插入、和希尔排序 其中,插入排序的思想都是一样的,都是以首个待排序的数字作为假设已经有序的序列,然后从已经有序的序列的最后一个位置,从后往前找满这趟比较中元素适合放置的位置。 1. 直接插入插入排序: /* 直接插入插入排序,假定首个元素有序, 待插入元素和前面的元素依次大小比较, 如果满足该元素小于前面一次由后到前的元素,就依次移动元素 循环判断 时间复杂度O(n^2) 稳定排序 基本有序时时间复杂度为O(n) */ void insertSort1(int a[], int n){ //直接插入排序 int temp,j; for(int i=1;i<n;i++){ temp = a[i]; j = i-1; while(j>=0 and temp<a[j]){ //逐个元素比较,逐个移动元素 a[j+1] = a[j]; j--; } a[j+1] = temp; } } void insertSort2(int a[], int n){ int i, j, temp; for(i=1;i<n;i++){ temp = a[i]; for(j=i-1;temp<a[j] and j>=0;j--){ a[j+1] = a[j]; } a[j+1] =