题目:各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。基本要求:(1) 从以下常用的内部排序算法至少选取5种进行比较:直接插入排序;折半折入排序;希尔排序;起泡排序;快速排序;简单选择排序;堆排 ...
分类:
编程语言 时间:
2020-06-15 22:34:29
阅读次数:
61
排序方法 最坏时间复杂度 最好时间复杂度 平均时间复杂度直接插入 O(n2) O(n) O(n2)简单选择 O(n2) O(n2) O(n2)起泡排序 O(n2) O(n) O(n2)快速排序 O(n2) O(nlog2n) O(nlog2n)堆排序 O(nlog2n) O(nlog2n) O(nl ...
分类:
其他好文 时间:
2019-10-17 20:31:14
阅读次数:
96
排序 起泡排序(bubble sort),归并排序(merge sort) 1,起泡排序(bubble sort),大致有三种算法 基本版,全扫描。 提前终止版,如果发现前区里没有发生交换,就说明前区已经有序了,直接终止了。但是有个效率低下的地方,就是右边界hi是每次循环向前移动一个单元 跳跃版,在 ...
分类:
编程语言 时间:
2019-10-16 11:39:07
阅读次数:
115
1.1 计算机与算法 1.1.3 起泡排序 1.3 复杂度分析 复杂度排名 1.3.1 常数O(1) 1.3.2 对数O( log(n) ) 每执行一轮,n的大小都会成倍减小。对于对数的多次,即c循环里套的是对数循环,则 $O(log^c(n))$ (c 为常数) 比如整数二进制展开中的位数1总数统 ...
分类:
编程语言 时间:
2019-09-23 11:54:16
阅读次数:
83
代码中所有数组都是 1~n。 1、冒(起)泡排序 1 void sort1( int a[],int n) 2 { 3 for(int i=1; i<=n-1; i++) 4 for(int j=1; j<=n-i; j++) 5 if(a[j+1]<a[j]) 6 swap(a[j],a[j+1] ...
分类:
编程语言 时间:
2019-09-01 18:34:53
阅读次数:
145
1.1.初始版本 1.2.改进1:如果在进行循环到了某一步的时候,发现总体已经有序了,则直接结束循环。 1.3.改进2:记录每次最右边的逆序点(该点后半部分已经有序),则可以从该点往左边进行再排序,省去了已经有序再排序的部分步骤。 ...
分类:
编程语言 时间:
2019-06-22 20:08:18
阅读次数:
149
局部有序和整体有序 在由一组整数组成的序列A[0, n 1]中,满足 $ A[i 1] \leq A[i] $ 的相邻元素称为顺序的;否则是逆序的。 扫描交换 由有序序列的特征,我们可以通过不断改善局部的有序性实现整体的有序性:从前向后依次检查每一对相邻元素,一旦发现逆序即交换二者的位置。对于长度为 ...
分类:
编程语言 时间:
2019-03-23 22:29:46
阅读次数:
176
冒泡排序(写法1): flag = true; i = 0; i < n-1; ++i{ j = 0; j < n-1-i; ++j{//从前面开始冒泡 if([j] < [j+1]){ 交换;//小的放后面 flag = false; } } if(flag == true){break;}//若 ...
分类:
编程语言 时间:
2019-03-18 18:45:34
阅读次数:
206
void bubbleSort(int A[],int n) { bool sorted = false; while(!sorted) { sorted = true; for(int i = 0; i < n; i++) { if(A[i] > A[i+1]) { swap(A[i], A[i+ ...
分类:
编程语言 时间:
2018-10-05 21:09:05
阅读次数:
158