快速排序

原创
2015/08/28 10:44
阅读数 66

快速排序代码

// 快速排序.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
 
int RandomInRange(int min, int max)
{
 int random = rand() % (max - min + 1) + min;
 return random;
}
/*  
* 交换elem1, elem2的值 
*/  
void Swap(int *elem1, int *elem2)  
{  
 int temp = *elem1;  
 *elem1 = *elem2;  
 *elem2 = temp;  
} 
 
int Partition(int data[], int length, int start, int end)
{
 if(data ==  NULL || length <= 0 || start < 0 || end >= length)
 {
  throw new std :: exception("Invalid Parameters!");
 }
 int index = RandomInRange(start, end);
 Swap(&data[index], &data[end]);
 int small = start - 1;
 for(index = start; index < end; ++index)
 {
  if(data[index] < data[end])
  {
   ++small;
   if(small != index)
   {
    Swap(&data[index], &data[small]);
   }
  }
 }
 ++small;
 Swap(&data[small], &data[end]);
 return small;
}
 
void QuickSort(int data[], int length, int start, int end)
{
 if(start == end)
 {
  return;
 }
 int index = Partition(data, length, start, end);
 if(index > start)
 {
  QuickSort(data, length, start, index - 1);
 }
 if(index < end)
 {
  QuickSort(data, length, index + 1, end);
 }
}
 
int main()
{
 int a[]={4,6,8,1,2,9,3,7,5};
 QuickSort(a,9,0,8);
 for(int i=0;i<9;i++)
  cout<<a[i];
 system("pause");
 return 0;
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部