快速排序算法

来源:互联网 发布:淘宝价格字体 编辑:程序博客网 时间:2024/06/09 15:37
<img src="http://img.blog.csdn.net/20151224122026960?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
#include "stdafx.h"#include <iostream>using namespace std;void QuictSort(int a[], int left, int right){if (left > right){return ;}int first = left;int last = right;int  key = a[first];  //设定基准/*下面的循环是为了得到大于和小于基准值的数据分别位于左右两侧*/  while (first < last){while (first < last&&a[last] >= key){last--;}a[first] = a[last];while (first<last&&a[first]<key ){first++;}a[last] = a[first];}a[first] = key; QuictSort( a, left, first-1); QuictSort(a, first + 1, right);}int main(){int a[] = { 9, 18, 6, 3, 8, 4, 77 };QuictSort(a, 0,sizeof(a)/sizeof(a[0])-1);for (int i = 0; i < sizeof(a) / sizeof(a[0]) ; i++){cout << " " << a[i];}//waitKey(0);return 0;}

下面这个是引用别人写的快速排序http://blog.csdn.net/liuchen1206/article/details/6954074

#include<iostream>  using namespace std;  void quickSort(int a[],int,int);  int main()  {      int array[]={34,65,12,43,67,5,78,10,3,70},k;      int len=sizeof(array)/sizeof(int);      cout<<"The orginal arrayare:"<<endl;      for(k=0;k<len;k++)          cout<<array[k]<<",";      cout<<endl;      quickSort(array,0,len-1);      cout<<"The sorted arrayare:"<<endl;      for(k=0;k<len;k++)          cout<<array[k]<<",";      cout<<endl;      system("pause");      return 0;  }    void quickSort(int s[], int l, int r)  {      if (l< r)      {                int i = l, j = r, x = s[l];          while (i < j)          {              while(i < j && s[j]>= x) // 从右向左找第一个小于x的数                  j--;               if(i < j)                  s[i++] = s[j];              while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数                  i++;               if(i < j)                  s[j--] = s[i];          }          s[i] = x;          quickSort(s, l, i - 1); // 递归调用          quickSort(s, i + 1, r);      }  }





0 0