码迷,mamicode.com
首页 > 其他好文 > 详细

快速排序

时间:2014-09-27 00:09:38      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:blog   io   使用   ar   for   sp   div   art   on   

#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.

快速排序

标签:blog   io   使用   ar   for   sp   div   art   on   

原文地址:http://www.cnblogs.com/yyxayz/p/3995700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!