1#include <stdio.h>2voidQuickSort(intarr[],intleft,intright)3{4inti =left;5intj =right;6inttmp = arr[i];//设定中间数7if(i < j)//判断是否进入递归8{9while(i < j)//判断是否完成一次快速排序10{11while((arr[j] > tmp)&&(i <j))12{13j--;14}15arr[i] =arr[j];16while((a...
快速排序(Quick Sort) 是对冒泡排序的一种改进方法,在冒泡排序中,进行元素的比较和交换是在相邻元素之间进行的,元素每次交换只能移动一个位置,所以比较次数和移动次数较多,效率相对较低。而在快速排序中,元素的比较和交换是从两端向中间进行的,较大的元素一轮就能够交换到后面的位置,而较小的元素一轮就能交换到前面...
因此快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),它的平均时间复杂度为O(NlogN)。代码 //方法1:便于理解public static void quickSort2(int[] arr,int low,int high){ int i,j,temp,t; if(low>high){ return; } i=low;//起始位 j=high; //temp就是基准位 ...
1.冒泡排序 冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。双重循环时间 O(n^2) 算法描述: 比较相邻两个数据如果。第一个比第二个大,就交换两个...
改进的冒泡排序 最好的情况的时间复杂度是 O(N)。快速排序 快速排序使用的是 分治策略 把 一个序列分为两个子序列 。我们现在序列中选取一个元素作为 基准值(或者称为关键值key),然后重新排序这个序列,如果是升序的话,所有比基准值大的元素放到基准值的右边,所有比基准值大的元素放在基准值的左边,经过此...
交换类排序 1.冒泡排序 void BubbleSort(int k[], int n) { int i,j,flag; int temp; for (i = n-1; i >= 1; i--) { flag = 0; for (j = 1; j <= i; j++) { if (k[j-1] > k[j]) { temp = k[j]; k[j] = k[j-1]; ...
1.冒泡排序 1.1思想 每次遍历过程中,从头开始遍历,对比每一位数组和下一位数字的大小,只要发现下一位数字比当前大,则交换两个数字,这样一次遍历,最大的元素就出现在了数组的末尾。下一次遍历,依然是从头开始,但是第一次遍历的末尾元素已经不用遍历(因为是最大元素了)。如此下去,重复以上过程,直至最终完成排序。
所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 二、快速排序 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独...
1、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作就是重复地进行直到不需要再进行交换为止,也就是说该数列已经排序完成。这个算法的名字由来就是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1.排序分为以下四类共七种排序方法: 交换排序: 1) 冒泡排序 2) 快速排序 选择排序: 3) 直接选择排序 4) 堆排序 插入排序: 5) 直接插入排序 6) 希尔排序 合并排序: 7) 合并排序 2.冒泡排序 时间复杂度O(n2) 其基本思想是:通过相邻元素之间的比较和交换,使关键字较小的元素逐渐从底部移向顶部,就像水底...