`

排序算法(四)快速排序(C++)

阅读更多
快速排序,从最低位和最高位开始。

#include <iostream.h>
#include <stdio.h>

using namespace std;

int partition(int data[], int low, int high);
void sort(int data[], int low, int high);
void change(int data[], int low, int high);

int partition(int data[], int low, int high)
{
	int i= low, j = high;
	int pivotKey = data[low];
	while(i<j){
		while(i<j && data[j]>=pivotKey){
			j--;
		}
		if(i<j){
			data[i] = data[j];
			i++;
		}
		while(i<j && data[i] < pivotKey){
			i++;
		}
		if(i<j){
			data[j] = data[i];
			j--;
		}
	}
	data[i] = pivotKey;
	return i;
}

void change(int data[], int low, int high)
{
	int temp;
	temp = data[high];
	data[high] = data[low];
	data[low] = temp;
}

void sort(int data[], int low, int high)
{
	if(low < high)
	{
		int pivot = partition(data, low, high);
		sort(data, low, pivot-1);
		sort(data, pivot+1, high);
	}
}

int main()
{
	int data[10] = {32,43,54,21,43,46,67,34,48,56};
	for(int i=0; i<10; i++)
	{	
		cout<<"data["<<i<<"]="<<data[i]<<endl;
	}
	sort(data, 0, 9);
	for(int i=0; i<10; i++)
	{	
		cout<<data[i]<<"  "<<endl;
	}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics