首页 > 代码库 > 经典白话算法之快速排序
经典白话算法之快速排序
【分析】
【伪代码】
【运行过程】
【代码】
/********************************* * 日期:2014-04-01 * 作者:SJF0115 * 题目:快速排序 **********************************/ #include <iostream> #include <stdio.h> using namespace std; //对子数组array[p...r]就地重排 int Partition(int array[],int p,int r){ int j,temp; //定义哨兵 int x = array[r]; //i为小于哨兵元素的最后一个元素下标 int i = p - 1; //j为待排序元素的第一个元素 for(j = p;j < r;j++){ //跟哨兵比较 if(array[j] < x){ i++; //交换array[i] array[j] temp = array[j]; array[j] = array[i]; array[i] = temp; } } //交换array[i+1](大于哨兵元素的第一个元素) array[r] temp = array[i+1]; array[i+1] = array[r]; array[r] = temp; //返回分割下标 return i + 1; } //快排 void QuickSort(int array[],int p,int r){ if(p >= r || array == NULL){ return; } int index = Partition(array,p,r); QuickSort(array,p,index-1); QuickSort(array,index+1,r); } int main() { int array[] = {2,8,7,1,3,5,6,4}; QuickSort(array,0,7); for(int i = 0;i <= 7;i++){ printf("%d\n",array[i]); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。