最好理解的快速排序 :实例解析输入数组,排序
2016-10-07 10:06
274 查看
1 #include<iostream> 2 using namespace std; 3 void quick_sort(int *num,int l,int r){ 4 int i=l,j=r,mid=num[(l+r)/2]; 5 while(i<=j){ 6 while(num[i]<mid) i++; 7 while(num[j]>mid) j--; 8 if(i<=j){ 9 int temp=num[j]; 10 num[j]=num[i]; 11 num[i]=temp; 12 i++; 13 j--; 14 } 15 } 16 if(i<r) quick_sort(num,l,i); 17 if(j>l) quick_sort(num,j,r); 18 } 19 int main(){ 20 int n,num[100]; 21 cin>>n; 22 if(n<=0) return 0; 23 for(int i=0;i<n;i++) 24 cin>>num[i]; 25 quick_sort(num,0,n); 26 for(int i=0;i<n;i++) cout<<num[i]<<" "; 27 return 0; 28 }
最简单的快排,输入排序。原理:
1.找到一个参照元素,将数组分为比他小的左部分和比他大的右部分两个子数组(分的时候简单的左部分右部分交换)
2.开始递归,不断将子数组分为左部分和右部分,最终每部分只含有一个元素,此时数组已经有序
相关文章推荐
- 菜鸟学算法:输入输出文件的海量数据(快速排序,数组排序)
- java简单实现双色球彩票模拟实例(数组、排序、方法、随机数、键盘输入)
- 输入10个数据放入一维数组中,用泡排法对其排序并输出。
- JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- Java实例17 - 快速排序 quick sort
- 快速排序(更好理解)
- 最容易理解的快速排序方法和程序
- 从键盘输入数组的元素,并对数组排序
- C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
- 找包含N个元素的数组里第K大的元素(引申:快速排序、找中位数、找前K大的元素)的时间复杂度
- 每天学习一算法系列(14) (输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字)
- C++利用指针数组和快排对输入的字符串进行排序
- 深入理解Struts 1.1及应用开发实例解析
- 利用可变数组将用户输入数字排序后输出
- 实例解析C++/CLI的输入与输出
- 快速排序不同输入规模时间复杂度分析
- JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- 实例解析C++/CLI之头文件、内联函数与数组
- 小实例-实现对成绩总分由高到低的排序-Java中数组对象的排序
- 第14 题:题目:输入一个已经按升序排序过的数组和一个数字