快速排序
来源:互联网 发布:决策支持软件 编辑:程序博客网 时间:2024/06/06 13:58
快速排序的基本思想:
通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可对这俩部分记录继续进行排序,已达到整个序列有序的目的。
代码:
void Quick_Sort(vector<int> &v, int first,int end){ if(first<end) { int key = v[first]; int i = first; int j = end; while(i<j) { while(i<j&&v[j]>=key) j--; if(i<j) v[i]=v[j]; while(i<j&&v[i]<key) i++; if(i<j) v[j]=v[i]; } v[i] = key; Quick_Sort(v,first,i-1); Quick_Sort(v,i+1,end); }}
代码2
int Partition(int data[],int length,int start,int end){ int pivot = data[end]; int curpos = start; for(int index =start;index<end;index++) { if(data[index]<pivot) { swap(data[index],data[curpos]); curpos++; } } swap(data[curpos],data[end]); return curpos;}void Quick_Sort(int data[],int length,int start,int end){ if(start>=end) return ; int index = Partiton(data,length,start,end); if(start<index) Quick_Sort(data,length,start,index-1); if(index<end) Quick_Sort(data,length,index+1,end);}
代码3 改进版
void Quick_Sort2(int data[], int length, int start, int end) { if (start >= end) return; int key = data[start]; int i = start, j = end+1; while (1) { do{ i++; } while (i <= end && data[i] < key); do{ j--; } while (data[j] > key); if (i > j) break; swap(data[i],data[j]); } swap(data[start], data[end]); Quick_Sort2(data, length, start, j - 1); Quick_Sort2(data, length, j + 1, end); }
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- zookeeper搭建问题
- C语言:递归的简单介绍
- ajax表单提交使用serialize()方法解决中文乱码
- 计算机视觉简介
- C# 泛型方法反射调用窗体
- 快速排序
- TensorFlow教程 1 Tensorflow简介
- [hibernate]创建hibernate项目并通过xml文件配置生成数据表
- Pie
- 最长单词
- Eclipse开发程序,取得新的工程后,启动Web服务出错原因总结
- Android:客户端和服务器之间传输数据加密
- 经典算法面试题 | 最少操作数使数组元素相等 I & II 大合集
- python初学笔记