排序算法中的快速排列中的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;
}

相关文章推荐

快速排序算法(Partition函数)分析与拓展

零、前言——二分查找        条件:如果数组是有序数组、部分有序数组、或者局部有序数组,在这类数组中进行查找时,二分查找较为常用。时间复杂度O(logN)。二分查找的主要思路:设定两个指针s...

排序算法(三)--关于快速排序Partition的思考

上一章我们讲解了快速排序,其中快速排序一趟划分的算法Partition.Partition可不只用在快速排序中,还可Selection algorithm(在无序数组中寻找第K大的值)中.甚至有可能正...
  • mfcbest
  • mfcbest
  • 2016年10月09日 15:30
  • 1107

数据结构和算法学习系列之快速排序的Partition函数一种实现方法

这种方式不同于以往的两个游标从左右两侧交替比较的方法。而是只是从一侧走向另一侧。不失为一种思路 1. 在书中看到快速排序的Partition一种实现方法。最开始颇为不理解。后来画图试数,不得不承认...

冒泡排序算法的C++函数模板

  • 2011年11月14日 17:08
  • 14KB
  • 下载

快速排序的两种实现方式,主要是Partition函数的实现原理不一样

package test; import java.util.Arrays; import java.util.Random; public class Partition { //方法一 p...

快速排序中的partition算法

简介 partition算法用途是:有一个数组array[]和其中任意一个数组元素x,修改数组,将数组中小于x的元素都移到x的左边,将大于x的元素都移动x的右边 返回值: 返回值为最终x在数组中的...

调用函数库中的快速排序算法qsort()排序各种数据类型

快速排序算法已经有函数库提供给我们了,我们只要根据待排序的数据类型,重写cmp()这个接口函数就行了。下面是实例。 qsort()函数在stdlib.h库中 C语言中的qsort()函数原型为vo...

快速排序算法

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

两张不同的快速排序算法

  • 2013年06月09日 18:47
  • 3KB
  • 下载

【Scala编程】函数式风格编写排序算法

有关Scala编程实例在刚开始学习一门编程语言的时候,总是想去写一些比较大的程序和项目,但是由于基础不扎实,往往欲速则不达。所以,只能一步一步来,通过一些经典的小例子来实践和锻炼,最终不断加深编程的技...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法中的快速排列中的partition函数
举报原因:
原因补充:

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