首页 > 代码库 > C++算法之 快速排序
C++算法之 快速排序
快速排序的思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
主要思路:
先从后面开始遍历找到比key值小的一个值,把这个值放到key的前面,再从前面开始遍历找比key大的值;
代码如下:
// QuickSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;void QuickSort(int a[], int start,int end){ if (start > end) { return; } int i = start; int j = end; int k = a[i]; while (i < j) { while (i < j && a[j] > k)//先从后面开始找小于k的值 j--; a[i] = a[j];//找到小于k的值,替换a[i] while (i < j && a[i] < k)//从前面找大于k的值 i++; a[j] = a[i];//找到大于k的值,刚才a[j]的值已经赋刚才的a[i];a[j]的值用现在找到的大于k的值填充 } a[j] = k;//最后i = j; 把k的值赋给a[i]; QuickSort(a,i+1,end); QuickSort(a,start,i-1);}int _tmain(int argc, _TCHAR* argv[]){ int a[] = {1,3,5,7,9,2,4,6,8,0}; int len=sizeof(a)/sizeof(a[0])-1; for(int i=0;i<=len;i++) { cout<<a[i]<<" "; } cout<<endl; cout<<"快速排序后:"<<endl; len=sizeof(a)/sizeof(a[0])-1; QuickSort(a,0,len); for(int i=0;i <= len;i++) { cout<<a[i]<<" "; } getchar(); return 0;}
C++算法之 快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。