diff --git a/冒泡、直接插入、折半插入排序 b/冒泡、直接插入、折半插入排序 new file mode 100644 index 0000000..6044b2a --- /dev/null +++ b/冒泡、直接插入、折半插入排序 @@ -0,0 +1,80 @@ +一、直接插入排序 +(一)直接插入排序是把新的数据插入以及排序好的数列中,排序的基本方法是:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。 +(二)代码: +#include +using namespace std; +void insert_sort(int a[],int n) { + int i,j; + for(i=1; i=0 && a[j]>temp; j--) { + a[j+1]=a[j]; + } + a[j+1]=temp;//此处就是a[j+1]=temp; + } + } +} + +int main() { + int a[8]= {70,50,30,20,10,70,40,60}; + int n=7; + insert_sort(a,n); + for(int i=0; i<=n; i++) { + cout<=high+1; j--){ + L.data[j+1] = L.data[j]; + } + L.data[high+1] = L.data[0]; + } +} +(三)时间复杂度:折半插入排序的时间复杂度仍为 O(n^2)。 +(四)运行时间:0.283秒 +三、冒泡排序 +(一)代码: +#include +void main() +{ + int n[10] = { 25,35,68,79,21,13,98,7,16,62 }; + int i, j,k,temp; + for (i = 1; i <= 9; i++) + { + for (j = 0; j <= 9 - i; j++) + { + if (n[j] > n[j + 1]) + { + temp = n[j]; + n[j] = n[j + 1]; + n[j + 1] = temp; + } + } + printf("第%d趟排序完成后的数据排序:\n",i); + for (k = 0;k < 10; k++) + printf("%-4d", n[i]); + printf("\n"); + } + printf("排序过后的数顺序:\n"); + for (i = 0; i < 10; i++) + printf("%-4d", n[i]); +} +(二)时间复杂度:冒泡排序平均时间复杂度为O(n2) 。 +(三)运行时间:0.463秒