首页 > 代码库 > C++之算法快速排序
C++之算法快速排序
快速排序
思路:
一个数组,随便选一个做基数,比它大的放他右边,比它小的放它左边,一轮下来就分成两组了,这两组再分别按刚才方法递归。
具体操作:
一个数组,第一个做基数取出来存在一个变量里,设置两个游标分别为数组开始和结束,
开始循环:
先按照游标从右到左依次选一个和基数比,该数比基数大就把结束游标向左移一位,比基数小的就把该数放到开始游标上去,此时再按照游标从左向右依次选一个数和基数比,该数比基数小就把开始游标向右移一位,比基数大就该数放到结束游标上去,再从新开始循环。
直到两个游标相等,开始递归。
int main (){ int data[] = {34,65,12,43,67,5,78,10,3,70} , k; int len=sizeof(data)/sizeof(int); quickSort(data , 0 , len-1); for (int i = 0; i < len; i++) { cout<<data[i]<<"\n"; }}void quickSort(int array[] , int begin , int end){ if(begin<end){ int l = begin , r = end , x = array[begin]; while(l < r){ while(l<r && array[r]>=x) r--; if(l<r){ array[l] = array[r]; l++; } while(l<r && array[l]<x) l++; if(l<r){ array[r] = array[l]; r--; } } array[l] = array[r] = x; quickSort(array , begin , r-1); quickSort(array , r+1 , end); }}
C++之算法快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。