快速排序_算法思想

快速排序_算法思想再对左右区间重复第二步,直到各区间只有一个数。void quickSortEntry。quickSortEntry;

大家好,欢迎来到IT知识分享网。

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

2.将比这个数大的数全放到他的右边,小于或等于他的数全部放在他的左边

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

int quickSortPartition(int arr[], int start, int end)
{
	int i = start;
	int j = end;
	
	//默认第一个元素为哨兵
	int sentry = arr[i];
	
	while(i < j)
	{
		//从右往左找第一个小于哨兵的元素
		while(i < j && arr[j] >= sentry)
		{
			j--;
		}
		
		//找到了 
		if(i < j)
		{
			arr[i] = arr[j];
			i++;
		}
		
		//从左往右找第一个大于哨兵的元素
		while(i <j && arr[i] <= sentry)
		{
			i++;
		}
		
		//找到了 
		if(i < j)
		{
			arr[j] = arr[i];
			j--;
		}
	}
	
	//把哨兵放到i == j的位置上
	arr[i] = sentry;
	
	return i;
}
void quickSort(int arr[], int start, int end)
{
	if (start < end)
	{
		//找出分界点 
		int index = quickSortPartition(arr, start, end);
		quickSort(arr, start, index - 1); //对分界点左边进行排序 
		quickSort(arr, index + 1, end);   //对分界点右边进行排序
	}
}
void quickSortEntry(int arr[], int count)
{
	quickSortEntry(arr, 0, count - 1);
}

快速排序_算法思想

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/37899.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信