快速排序

原创 2017年01月03日 17:36:41

快速排序是 C.R.A.Hoare 于 1962 年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。

该方法的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

void fast_sort(int* arr,int left,int right)
{
	if (left < right)
	{
		int i = left, j = right, x = arr[i];//将第一个数作为基准数(可以随意选择) 
		if (i < j)
		{
			while(i < j && arr[j] >= x)//从右边找到第一个小于x的值 
				j--;
			if(i < j)
				arr[i++] = arr[j];//找到之后,将其值放在i位置上 i++
			
			while(i< j && arr[i] < x)//从左边找到第一个大于x的值 
				i++;
			if(i < j)
				arr[j--] = arr[i];//找到之后,将其值放在j位置上,j++ 			
		}
		arr[i] = x;//第一次排好序的数及位置 
		fast_sort(arr,left,i-1);//递归,在x的左边区域范围内重复相同的操作 
		fast_sort(arr,i+1,right);//递归,在x的右边区域范围内重复相同的操作 
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

快速排序代码

  • 2016年06月14日 14:08
  • 2KB
  • 下载

简单的快速排序

  • 2015年01月23日 09:57
  • 479B
  • 下载

第15周项目1(4)- 验证快速排序算法

1.以第1个元素作为基准#include #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]...

快速排序算法

  • 2015年05月01日 16:41
  • 1KB
  • 下载

C#快速排序练习

  • 2017年06月20日 11:40
  • 30KB
  • 下载

java实现冒泡、选择、快速排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列...

快速排序原创数据(20组)

  • 2015年10月30日 21:48
  • 7.57MB
  • 下载

快速排序(quicksort)

IT公司招人,无论笔试还是面试,快排基本上都会问到。通常情况下,快排实现有两个函数: void quickSort(int arr[], int left, int right); int parti...

冒泡归并和快速排序java源码

  • 2016年05月11日 20:30
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速排序
举报原因:
原因补充:

(最多只允许输入30个字)