C++如何实现快速排序算法-创新互联

这篇文章主要为大家展示了C++如何实现快速排序算法,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

成都创新互联是专业的雁塔网站建设公司,雁塔接单;提供成都网站建设、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行雁塔网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一、基本思想是:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

二、方法1实现程序:左右两个方向扫描

// 快速排序:选第一个对象作为基准,按照该对象的排序码大小,将整个对象
// 序列划分为左右两个字序列:
// 左侧子序列中所有对象的排序码都小于或等于基准对象的排序码;
// 右侧子序列中所有对象的排序码都大于基准对象的排序码;
// 基准对象则排在这两个子序列中间,这也是该对象最终应放的位置
// 然后分别对这两个子序列重复施行上述方法,直到所有的对象都排在相应位置上为止
#include 
 
// 一次快速排序算法
int quickPass(int arr[], int low, int high) {
 int down, up, temp;
 
 down = low;
 up = high;
 temp = arr[low];
 while(down < up) {
  while((down < up) && arr[up] >= temp) // 从右向左扫描
   up--;
  if(down < up)
   arr[down++] = arr[up]; // 在被腾空出来的单元(由down指向)中填入arr[up]
  while((down < up) && arr[down] < temp) // 从左向右扫描
   down++;
  if(down < up)
   arr[up--] = arr[down]; // 在被腾空出来的单元(由up指向)中填入arr[down]
 }
 arr[down] = temp; // 最后把基准插回到数组中间去
 return down;
}
 
// 快速排序算法
void quickSort(int arr[], int low, int high) {
 // 对序列arr[low]到arr[high]作快速排序
 int mid;
 
 if(low < high) {
  mid = quickPass(arr, low, high); // 对序列arr[low]到arr[high]作一趟快速排序
  quickSort(arr, low, mid-1); // 对左半部分作递归处理
  quickSort(arr, mid+1, high); // 对右半部分作递归处理
 }
}
 
int main(int argc, const char * argv[]) {
 // insert code here...
 int len, i;
 int arr[] = {40, 30, 60, 90, 70, 10, 20, 40};
 
 len = sizeof(arr) / sizeof(arr[0]);
 std::cout << "排序前:\n";
 for(i = 0; i < len; i++)
  std::cout << arr[i] << " ";
 std::cout << std::endl;
 
 quickSort(arr, 0, len-1); // 调用快速排序法
 
 std::cout << "排序后:\n";
 for(i = 0; i < len; i++)
  std::cout << arr[i] << " ";
 std::cout << std::endl;
 return 0;
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:C++如何实现快速排序算法-创新互联
URL链接:http://myzitong.com/article/cdpsgp.html