数据结构算法之快速排序
来源:互联网 发布:2015南京住宅成交数据 编辑:程序博客网 时间:2024/06/03 13:34
快速排序的基本思路是从n个待排序的记录中任取一个记录,(不妨取第一个元素)设法将该记录放置于排序后他会最终应放的位置。使它前面的记录排序码都小于它的值,是它后面的都大于它的值。然后对前后两部分都重复这个过程。其基本思想是算法中的分治思想。
为了节省空间,可以不另开辟一个新的数组存储区,先将第1个记录暂存,设为想,这样就空出了第一个元素的位置,从第n个元素起找一个排序码不大于x的记录,将它放在第一个位置,这样,后面又空出来一个位置,从第二个元素起找一个排序码大于x的元素,将它放在后面空出的位置,重复这种两边向中间逼近的过程,可以把所有大于x的数放在x的后面。把所有小于x的数放在前面,最后当两边逼近同一位置时,便将暂存的x放于该位置。
对前后两个部分递归使用上述操作,排序即可完成。
附代码如下:
#include <stdio.h>#include <stdlib.h>void sort(int *a,int low,int hig){ int i,j; if(low<hig) { i=low; j=hig; a[0]=a[i]; do { while(a[j]>a[0]&&i<j)j--; if(i<j) { a[i]=a[j];i++; } while(a[i]<a[0]&&i<j)i++; if(i<j) { a[j]=a[i];j--; } }while(i!=j); a[i]=a[0]; sort(a,low,i-1); sort(a,i+1,hig); }}int main(){ int i; int low,hig; int a[11] = {8,3,10,9,2,4,3,6,8,11,7}; low=1;hig=10; sort(a,low,hig); for(i=1;i<=10;i++) { printf("%3d",a[i]); } return 0;}
0 0
- 数据结构算法之快速排序
- 数据结构算法之快速排序
- 数据结构排序算法之快速排序
- 【数据结构和算法之排序】快速排序
- 数据结构<一> 排序算法之快速排序
- 数据结构算法-排序算法之交换排序-快速排序
- 数据结构与算法之快速排序
- 数据结构与算法之快速排序
- 简述数据结构与算法之快速排序
- 数据结构与算法之---快速排序
- 数据结构与算法之快速排序
- (十二)数据结构之快速排序算法实现
- 【数据结构与算法】排序算法之六:快速排序
- [数据结构] 快速排序算法
- 数据结构-快速排序算法
- 数据结构之各种排序算法总结之快速排序
- 数据结构--排序算法--快速排序
- 考研数据结构与算法之排序专题一 快速排序
- 如何快速定位tomcat集群中的错误日志出处
- 第五届省赛javaA组- 打印菱形
- SpringBoot之返回页面视图&JSON
- Map集合的四种遍历方式
- linux--Vim命令合集
- 数据结构算法之快速排序
- springMVC源码分析--HandlerInterceptor拦截器调用过程(二)
- MemCache说明
- oracle 不支持级联更新
- Android Context
- Microsoft Visual Studio 2010 Service Pack 1 官方离线下载版(ISO)
- 打开手机上其他app的方法,不知道入口activity也可以打开
- Android总结之json解析(FastJson Gson 对比)
- JAVA 反射