首页 > 代码库 > 快速排序

快速排序

#include <stdio.h>#include <stdlib.h>#include <string.h>void quick_sort(int data[], int, int);int partition(int data[], int, int);int main( int argc, char* argv[] ) {	int data[8] = {2, 8, 7, 1, 3, 5, 6, 4};	quick_sort(data, 0, 7);	for (int i = 0; i < 8; i++)	{		printf("%d ", data[i]);	}		system("pause");	return 0;}void quick_sort(int data[], int low, int high){	if (low < high)	{		int p = partition(data, low, high);		quick_sort(data, low, p - 1);		quick_sort(data, p + 1, high);	}}int partition(int data[], int low, int high){	int i, j;	int r, temp;		r = data[high];//此处不可以使用data[low]。	i = low - 1;	for (j = low ; j < high; j++)	{		if (data[j] <= r) //此处使用“<=”,而不是“<”。其实,两种用法都对,但是推荐使用“<=”。		{			i++;			temp = data[i];			data[i] = data[j];			data[j] = temp;		}	}	temp = data[high];	data[high] = data[i + 1];	data[i + 1] = temp;	return i + 1;}

  快速排序不是稳定的排序算法!例如,2, 3, 6, 61, 5, 4.使用上述算法后,结果是2, 3, 4, 5, 61, 6.

快速排序