排序算法中的快速排列中的partition函数

原创 2016年05月30日 15:57:21
#include<iostream>
#include<fstream>
using namespace std;
/*
	算法思想:根据一个基准数,每一次执行过后都会所有的比基准数大的都会在他的右边
	比他小的都会在基准数的左边
*/
int partition(int arr[], int left, int right);

void QuitSort(int arr[], int left, int right);

int main(int argc, char argv[])
{
	ifstream cin("test.txt");
	int number;
	int arr[10];
	int point = 0;
	while (!cin.eof())
	{
		cin >> number;
		arr[point++] = number;
	}
	cin.close();
	QuitSort(arr, 0, 9);
	ofstream cout("test.txt",ios::app);
	cout << endl;
	for (int i = 0; i < point; i++)
	{
		cout << arr[i] << " ";
	}
	cout.close();
	return 0;
}
void QuitSort(int arr[], int left, int right)
{
	if (left < right)
	{
		//partition函数的机制是,是的数组根据基准数分成两部分
		int mid = partition(arr, left, right);
		//递归调用的方法,对基准数两边的数分别进行排序
		QuitSort(arr, left, mid - 1);

		QuitSort(arr, mid + 1, right);
	}
}
int partition(int arr[], int left, int right)
{
	//把数组的left位置的数字当做是基准数
	//从两边进行比较,先右后左
	int pivot = arr[left];
	while (left < right)
	{
		while (left<right&&arr[right]>pivot)
			right--;
		arr[left] = arr[right];
		while (left < right&&arr[left] < pivot)
			left++;
		arr[right] = arr[left];
	}
	arr[left] = pivot;
	return left;
}

快速排序与快速选择算法

一、快速排序 (1) 基本思想 (2) C实现 // 快速排序, 平均时间复杂度O(NlogN) void quickSort( DataType* A, int beg, int end ...
  • yangalbert
  • yangalbert
  • 2012年03月26日 14:18
  • 8453

快排光芒下被忽视的Partition函数

1.前言: 看到这篇标题,没有学过快排的人自然是不知道Partition函数的意思和作用,这里附上学习的连接Lantian的快排总结 我们现在都是被快排蒙蔽了双眼,没有意识到快最核心的划分函数Pa...
  • ltyqljhwcm
  • ltyqljhwcm
  • 2016年11月02日 19:33
  • 1638

快速排序算法在生活中的应用

今天公司组织活动,游戏规则是随机一组30张图片,飞机,月饼,奥运会等等,然后每组10个人,要求在 一分钟内把图片按照从小到大顺序排列好由组长交给裁判,时间最少为优胜. 每组有三次机会,由于不...
  • yhm2046
  • yhm2046
  • 2012年11月24日 17:31
  • 3162

快速排序算法里的partition函数

快速排序算法里的partition函数用来解决这样一个问题:给定一个数组arr[]和数组中任意一个元素a,重排数组使得a左边都小于它,右边都不小于它。 // arr[]为数组,start、...
  • samjustin1
  • samjustin1
  • 2016年09月25日 18:19
  • 464

快排中的partition函数

//p,r分别是这个要排序的区段的下标 int partion(int *arElem, int p, int r) { int x = arElem[r]; int i = p,j = p;...
  • gaopu12345
  • gaopu12345
  • 2016年03月10日 19:16
  • 2125

利用STL中的partition完成快排

学习《STL源码剖析》p354时,发现STL中已有partition函数,这不禁让人联想到c语言实现的快排:int Partition(int k[], int low, int high) { i...
  • hiyajo_salieri
  • hiyajo_salieri
  • 2017年04月03日 18:30
  • 489

排序算法实际应用

最近 工作中 碰到这么一个场景: 我们需要统计合伙人这个月的所有的收入和开支明细,并且按时间进行降序排列 这些数据分别存在 不同的数据表中中,而且有些数据 例如订单信息 需要多返回一些字段 ...
  • XMZ_JAVA
  • XMZ_JAVA
  • 2017年04月25日 10:40
  • 386

Python的partition字符串函数

在2.5版中新增加了一个叫rpartition的函数,看一下说明文档: rpartition(...) S.rpartition(sep) -> (head, sep, tail) ...
  • changzhi1990
  • changzhi1990
  • 2014年03月14日 14:23
  • 1337

scala中span和partition区别

scala中的partition span splitAt groupBy 注:val (a,b) = List(1,2,3,4,5).partition(_%2==0) // (List(...
  • u012762573
  • u012762573
  • 2015年07月07日 19:39
  • 2094

Java实现的字符串全排列算法

Java实现的字符串全排列算法说明 本方法的代码参考了网上的资料,本文只对方法的运行结果进行输出并对代码进行分析。 —— [ 参考代码 ] 代码块实现全排列的java方法import ja...
  • shenlongshi
  • shenlongshi
  • 2017年04月10日 19:29
  • 777
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法中的快速排列中的partition函数
举报原因:
原因补充:

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