快速排序法(递归调用)
来源:互联网 发布:网络小胖现状 编辑:程序博客网 时间:2024/06/06 01:07
小弟刚学算法,这事打手打的第一个快速排序,算法比较简陋,冗余,如果您看到有需要改进的地方,请您高台贵手,不费口舌,指点小弟一下,以便让小弟开阔视野,继续前进。
2 #include <iostream>
3 using namespace std;
4
5 //这是递归调用函数中交换函数
6 void swap(int *l, int *h)
7 {
8 int temp;
9 temp = *l;
10 *l = *h;
11 *h = temp;
12 }
13
14 //这是一次排序,完成一次排序任务,并且返回mid的值。
15 int partion(int A[], int l, int h) //A为数组,l为待排序区间的左值(low),h相同(high)
16 {
17 int* low = &A[l];
18 int* high = &A[h];
19 int* m = &A[l];
20 while(l<h)
21 {
22 while((l<h)&& *m <= *high)
23 {
24 h--;
25 high--;
26 }
27 if(l == h)
28 break;
29 swap(m, high);
30 m = high;
31 l++;
32 low++;
33 while((l<h) && *m > *low)
34 {
35 l++;
36 low++;
37 }
38 swap(m, low);
39 m = low;
40 h--;
41 high--;
42 }
43 swap(m, low);
44 int n = l;
45 return n;
46 }
47
48 //这是调用函数,可以理解为发动递归调用,而quick是被调用的排序函数
49 void quick(int A[],int l,int h)
50 {
51 if(l < h)
52 {
53 int mid = partion(A, l, h);
54 quick(A, l, mid-1);
55 quick(A, mid + 1, h);
56 }
57 }
58
59 int main()
60 {
61 int team[10];
62 for(int i=0; i < 10; i++)
63 {
64 team[i] = rand()%(10);//产生随机数
65 cout << team[i] << " ";
66 }
67 cout << endl;
68 quick(team, 0, 9);
69 for(int i = 0; i < 10; i++)
70 cout << team[i] << " ";
71 return 0;
72 }
- 快速排序法(递归调用)
- 快速排序递归调用
- 快速排序 递归调用
- 快速排序(递归调用版)
- 快速排序(递归)
- 快速排序(递归)
- 快速排序(递归)
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。
- 快速排序详解(递归法)
- 快速排序(递归法与迭代法)
- 排序--递归排序(快速排序)
- 快速排序法 递归
- 快速排序【递归分治法】
- 快速排序(递归和非递归)
- 快速排序(递归和非递归)
- 快速排序实现(递归+非递归)
- 快速排序(递归+非递归)
- 快速排序(递归版本)
- iphone中使用第三方工具(RegexKitLite)实现正则表达式
- onInterceptTouchEvent和onTouchEvent调用关系
- VMware Workstation "This virtual machine appears to be in use.
- MyBatis中对象的范围和生命周期
- JNI 技术与 Android 应用
- 快速排序法(递归调用)
- 如何让你开发的游戏赚钱
- php生成xml文件
- 浏览器插件之ActiveX开发(二
- Linux初学者学习之目录的创建与delete命令
- OpenFileDialog控件用法
- Android EditText属性大全
- LayoutInflater作用及使用
- Javascript学习笔记(二)