【总结】如果有 n 个数进行排序,只需将 n-1 个数归位,即要进行 n-1 趟操作,而每一趟开始都从第 1 位进行相邻的两个数 进行比较,将小的那个数放在后面,已经归位的就不用进行比较。 【特点】冒泡算法的核心部分是双重嵌套循环,可以看出时间复杂度是 O(N²),这是一个非常高的时间复杂度。 这里使用 C#...
菜鸟算法 快速排序 funcQuickSorter(array*[]int,startint,endint){ifstart>end{return}pivot,head,tail:=start,start,endforhead<tail{// 移动尾指针 寻找小于基准值的数 (这里基准值选取的是头部数,所以先移动尾指针)for(*array)[tail]>=(*array)[pivot]&&head<tail{tail--}// 移动头指针 寻找大于基准...
看看方法调用及排序结果: 1@Test2fun test(){3val array = intArrayOf(4,7,91,10,21,14,22,1,62,103,5,10)4quickSort(array,0, array.size -1)5for(iinarray.indices) {6print(array[i].toString() +"")7}8}
快速排序:时间复杂度O(nlog2n) 才开始忘记那个递归的判断条件了。。。 以前一直以为递归难懂,其实并不是。。。 //快速排序算法 #include <stdio.h> #define MAX 10 intPartition(intarr[],intleft,intright)//选一个数,这个数左边的为小于它的,右边为大于它的 { intlow, high, x; low = left; high...
两者都能达到Θ(n lg n)的时间复杂度,而且归并排序最差也能达到Θ(n lg n). 快速排序最差的时间复杂度为Θ(n2). 但是,在实际使用当中,快速排序通常要比归并排序快3倍左右,而且快排是就低排序,在缓存和虚拟内存中实现较好。 算法改进:随机化快速排序 ...
1packagecom.javaTest300;23publicclassTest039 {45publicstaticvoidmain(String[] args) {//快速排序67inta[]={2,3,8,10,5,1,8,78,35,12};89System.out.println("---排序前---");1011for(inti = 0; i < a.length; i++) {1213System.out.print(a[i]+" ");1415}1617System.out.println...