快速排序,一种实现
来源:互联网 发布:淘宝上买单机游戏 编辑:程序博客网 时间:2024/05/20 21:56
尝试写了一下快排。
另外安利一个快排的舞蹈演示,当然不止快排点击打开链接。
#include<stdlib.h>#include<time.h>enum Orientation{TOLEFT,TORIGHT,};void show(int* src, int len) {for (int i = 0; i < len; i++) {printf("%d, ", *(src + i));}printf("\n\r");}void swap(int* a, int* b) {int temp = *a;*a = *b;*b = temp;}void quisort(int* src, int s, int e) {//printf("recently , s is %d, e is %d , reference is %d ,\n\r", s, e, *(src+s));//show(src, 8);if (s >= e) {return;}int reference = *(src + s);int i = s;int j = e;int flag = -1;Orientation orientation = TOLEFT;while (i < j) {//printf("sort , i= %d, j= %d, orientation : %d\n\r", i , j, orientation);//show(src, 8);if (orientation == TOLEFT) {if (*(src + j) > reference) {j--;orientation = TOLEFT;}else{swap((src + i), (src + j));i++;orientation = TORIGHT;}}else{if (*(src + i) > reference) {swap(src + i, src + j);j--;orientation = TOLEFT;}else{i++;orientation = TORIGHT;}}}//printf("sort over , i= %d\n\r", i);//show(src, 8);quisort(src, s, i-1);quisort(src, i+1, e);}void process() {int s[] = { 3,9,8,6,1,5,2,4 };//randomize();//srand(time(NULL));for (int i = 0; i < 8; i++) {s[i] = rand();}printf("raw data:\n\r");show(s, 8);quisort(s, 0, 7);printf("final result :\n\r");show(s, 8);}int main(){for (int i = 0; i < 10; i++) {process();} return 0;}
0 0
- 快速排序,一种实现
- 快速排序的一种实现
- 快速排序的一种实现
- 快速排序的一种简单实现
- 快速排序算法的一种实现
- 快速排序的一种java实现
- 快速排序的一种实现方法
- 快速排序一种易于理解的方式实现
- 一种简单的用java实现快速排序(Quicksort)
- 一种简单的用java实现快速排序(Quicksort)
- 快速排序的一种写法
- 快速排序的一种写法
- 快速排序的一种方法
- 每天一种算法--快速排序
- 一种排序 Java实现
- 一种排序算法(快速排序)
- 荷兰国旗问题和三路快速排序的一种实现
- 数据结构和算法学习系列之快速排序的Partition函数一种实现方法
- SVN 分支与合并
- CSS选择器特殊性与重要性
- 不借助二维数组,输出蛇形数组
- 第十三周实践项目2.1-动物这样叫
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- 快速排序,一种实现
- 使用成员函数、友元函数和一般函数的区别
- Android studio JavaDoc的使用
- 开通博客第一天,这将会是书写一切笔记的地方
- C++将类的成员函数作为回调函数
- C++回调函数简析
- JAVA的动态代理模式分析以及与spring AOP的比较
- 我的大一生活
- android N 分屏