快速排序法一(C)
来源:互联网 发布:淘宝模板装修市场 编辑:程序博客网 时间:2024/06/07 13:43
快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。
解法 这边所介绍的快速演算如下:将最左边的数设定为轴,并记录其值为 s
廻圈处理:
令索引 i 从数列左方往右方找,直到找到大于 s 的数
令索引 j 从数列左右方往左方找,直到找到小于 s 的数
如果 i >= j,则离开回圈
如果 i < j,则交换索引i与j两处的值
将左侧的轴与 j 进行交换
对轴左边进行递回
对轴右边进行递回
如下图:
C代码:
#include<stdio.h>#include<stdlib.h>#include<stdio.h>#define MAX 10#define swap(x,y) {int t;t=x;x=y;y=t;}void quick_sort(int number[], int left, int right){ int i, j; //int num = number[left]; //定义基准数 if (left < right) { i = left; j = right + 1; while (1) { while (i <= MAX&&number[++i] < number[left]); //从左至右查找比基准数大的数 //printf("%d\n", i); while (j >= left&&number[--j] > number[left]);//从右至左查找比基准数小的数 //printf("%d\n", j); if (i < j) { swap(number[i], number[j]); } if (i > j) { swap(number[j], number[left]); break; } } quick_sort(number, left, j - 1);//左半部分递归 quick_sort(number, j + 1, right); //右半部分递归 }}int main(){ int num[10] = { 41 ,24 ,76 , 11 ,45 ,64 ,21 ,69 ,19 ,36 }; quick_sort(num, 0, 9); for (int i = 0; i < 10; i++) printf("%d ", num[i]); system("pause"); return 0;}
阅读全文
0 0
- 快速排序法一(C)
- 快速排序法(一)
- 快速排序法(一)
- 快速排序法(一)
- 快速排序(一)
- 快速排序(一)
- 快速排序(C++)
- 快速排序(C++)
- 快速排序(c++)
- 排序算法(一)——快速排序法
- 一躺快速排序法
- c语言快速排序法
- c语言 快速排序法
- 快速排序法-C描述
- 快速排序法二(C)
- 排序算法(一)快速排序
- 排序算法(一):快速排序
- 排序算法(一)--快速排序
- 深入理解Java虚拟机笔记(1、2、3章)
- eclipse 打造 Python 环境
- 05详细设计说明书(机房收费系统V2.1)
- HDOJ 2132 An easy problem
- PMP笔记-不同合同类型的优缺点比较
- 快速排序法一(C)
- jQuery Validate
- 面向对象技术与方法作业
- Spring Cloud Eureka 初探
- 门罗币linux钱包
- 二叉树的遍历
- 【Spring Cloud】Zuul 路由访问
- c++primer第五版 练习5.21
- Arduino--基础(五)--DHT11模块的使用