快速排序
来源:互联网 发布:最全在线网络理财投资 编辑:程序博客网 时间:2024/06/06 01:49
快速排序是一种效率比较高的排序方法,时间复杂度为O(nlogn),这个时间基本上能够过绝大部分OJ,下面是它的主要排序方法:
快速排序主要采取从数组尾和数组首两端同时比较排序的方法,选取数组尾即数组的最后一个元素为待比较的元素,然后从数组尾依次向前直到找到第一个比原来的待比较元素大的元素(此处实现数组的升序排列,若实现数组的降序排列则找到第一个比待比较元素小的元素),然后交换,再使数组首为待比较元素,从前向后找,直到找到第一个比它小的元素(与上面的注释一样,降序反之),然后交换。至此完成一个循环。再依次重复上述步骤,(运用递归的方法),直至数组首尾相遇。就排好了。
下面是代码:
void quicksort(int a[],int low,int high) //待排序数组a,low为排序起点,high为排序终点。{ int i,j,temp; i=low; j=high; temp=a[i]; if(low<high) //当排序起点小于终点时进行 { while(i<j) { while(i<j && a[j]>=temp) //从后向前查找直到找到第一个比temp小的元素 { j--; } a[i]=a[j]; while(i<j && a[i]<=temp) //从前向后查找直到找到第一个比temp大的元素 { i++; } a[j]=a[i]; }
a[i]=temp; //更新
quicksort(a,low,i-1); //递归进行查找
quicksort(a,j+1,high); } else //当排序起点大于终点时,返回 { return; }}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Git学习(廖雪峰的Git教程)笔记2
- 获取非内嵌style的样式
- S2-045 跨平台GUI Exp
- C实现文件内部操作
- Spring 知识点总结 之 事务管理
- 快速排序
- thinkphp网易云信短信接口核心代码
- wsdl文件用SoapUI快速创建WebService,CXF生成客户端代码
- Bootstrap 缩略图
- 2017年计划
- CCF-I'm stuck!(BFS)
- 腾讯云安全-云鼎实验室:黑客是如何实现数据库勒索的
- face detection and aligh
- Linux下的串口编程(二)