快速排序算法
来源:互联网 发布:低音炮哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/06 13:05
快速排序的三个步骤
1) 选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot);
2) 分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大;
3) 递归地对两个序列进行快速排序,直到序列为空或者只有一个元素;
i = j = 2, 这样序列就这样分割成了两部分,左边部分{20, 10} 均小于 基准值(30);右边部分 {60, 40,50}均大于基准值。
这样子我们就达到了分割序列的目标。再接着对左右子序列分别用同样的办法进行分割,直至左右子序列不超过一个元素,那么排序结束,整个序列处于有序状态。
<?php//快速排序header("content-type:text/html;charset=utf-8");function quick_sort($arr,$left,$right){ if ($left>=$right) { //var_dump($arr); return ; } $i = $left; $j = $right; $temp= $arr[$left]; while ($i != $j) { while($i < $j && $arr[$j] >= $temp) // 从右向左找第一个小于x的数 $j--; if($i < $j) $arr[$i] = $arr[$j]; while($i < $j && $arr[$i] < $temp) // 从左向右找第一个大于等于x的数 $i++; if($i < $j) $arr[$j] = $arr[$i]; } $arr[$i] = $temp; quick_sort(&$arr, $left, $i - 1); // 递归调用 quick_sort(&$arr, $i + 1, $right);}$list = array('23','38','22','45','23','67','31','15','41');quick_sort(&$list,0,8);var_dump($list);
c语言版本
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include<stdio.h> #include <string.h> //快速排序算法void quick_sort(int *arr,int left,int right) { int i,j,tmp;if (left>=right) { return ; } i = left; j = right; tmp = arr[i]; while (i != j) { while(i < j && arr[j] >= tmp) // 从右向左找第一个小于tmp的数 j--; if(i < j) arr[i] = arr[j]; while(i < j && arr[i] < tmp) // 从左向右找第一个大于等于tmp的数 i++; if(i < j) arr[j] = arr[i]; } arr[i] = tmp; quick_sort(arr, left, i - 1); // 递归调用 quick_sort(arr, i + 1,right); } int main() { int array[] = {30,40,60,10,20,50}; quick_sort(array,0,5); printArray(array,6); system("pause"); return 0; }
0 0
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- Selenium Webdriver元素定位的八种常用方式
- 第一次写CSDN博客个人感受
- PAT 1035. Password (20)(修改字符串)
- ARP嗅探过程
- 如何在web项目中引用velocity模板引擎?
- 快速排序算法
- 建议131:用PascalCasing命名公开元素
- iOS9+Xcode7免越狱免证书直接调试
- python 下载文件到文件夹下的问题
- Linux处理目录的常用命
- Android View绘制流程,如何自定义View
- quartz 学习
- css3学习笔记
- viewDidLoad调用animateWithDuration无效