排序算法之快速排序算法

原创 2015年07月08日 21:12:43
快速排序算法

快速排序算法和冒泡排序算法都属于交换排序算法,其中快速排序算法可以看做是冒泡排序算法的升级版。

快速排序算法的思想:在一列需要排序的数中,首先随机选一个基准数,一般选开始元素。这里我们定义两个变量i和j,我们给i,j取个好听名字,称为赶路人。i,j赶路人分别从最左边和最右边相向赶路。j从最右边的位置开始,若找到一个数比基准数小,就停止。然后i从最左边的位置开始,若找到一个数比基准数大,就停止。然后把i,j当前位置对应的值互换。然后i,j两点继续“赶路”,按照上面的模式,当i和j重复了,就停止赶路。此时在把i对应的值和开始设置的基准数互换,这就找到了开始时基准数的真正位置,此时保证了基准数右边的值不小于基准数,左边的数不大于基准数。其次,把基准位置两边的数,按照上面的规则进行下去,最后一直递归下去,最后就实现了快速排序。

void quicksort( int num[],int begin ,int end)
{
	int temp = num[begin];//随机的基准点
	int i = begin;
	int j = end;
	if (begin >= end)return;
	while(i!=j)
	{
		while(num[j] >= temp && i < j)j--;
		while(num[i] <= temp && i < j)i++;
		if(i < j)
		{
			int t = num[j];
			num[j] = num[i];
			num[i] = t; 

		}
	}
	num[begin] = num[i];
	num[i] = temp;

	quicksort( num,begin,i - 1);
	quicksort( num,i + 1,end);
}

int main()
{
	int a[] ={110,23,56,7,2,5,1,56,90,11,24,5,7,89,12,34,5,99};
	quicksort(a,0,17);
	for(int i = 0;i < 18;i++)  printf("%d ",a[i]); 
    getchar();
    return 0; 
}


快速幂取模算法详解

1.大数模幂运算的缺陷: 快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我...
  • ltyqljhwcm
  • ltyqljhwcm
  • 2016年11月05日 10:40
  • 13738

矩阵快速幂总结

矩阵快速幂 基础知识:(会基础的直接看应用部分) (1) 矩阵乘法 简单的说矩阵就是二维数组,数存在里面,矩阵乘法的规则:A*B=C 其中c[i][j]为A的第i行与B的第j列对应乘积的和,即: ...
  • wust_zzwh
  • wust_zzwh
  • 2016年11月25日 15:40
  • 8142

快速幂+快速幂经典例题

快速幂取模算法所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模...
  • zhhe0101
  • zhhe0101
  • 2016年10月15日 10:59
  • 1200

快速排序 过程图解

注意:此文为转载文章,原文地址为:http://www.cnblogs.com/ahalei/p/3568434.html            原作者:啊哈磊              ...
  • hrn1216
  • hrn1216
  • 2016年05月28日 19:39
  • 27458

随机化的快速排序

快排是所有排序算法中平均性能最好的一种pai
  • wangyulinyy
  • wangyulinyy
  • 2014年09月15日 18:39
  • 1281

快速排序 图解算法过程

步骤一:划分 (1)选择数组的尾元素做为支点,支点选择方案有很多。 (2)把>=支点的元素放到右边。 (3)把...
  • collonn
  • collonn
  • 2013年12月28日 12:47
  • 5709

快速排序的改进

快速排序的改进 快速排序最坏情况下,要比较O(n^2)次,但平均性能为nlogn,基本达到了比较类排序所需时间的的下界。核心代码为: void qSort(int *data, int begin...
  • u013861473
  • u013861473
  • 2014年05月28日 22:24
  • 1228

结合题目讲解“快速排序算法”

根据一道快速排序算法自考题,进行学习方法上的反思,同时讲解自己对快速排序算法的理解...
  • sun15732621550
  • sun15732621550
  • 2016年10月16日 16:44
  • 2302

快速排序(递归版)

快速排序是最经典的排序算法,它用途广泛,效率很高,也经常被拿来检验coder的基本功底。此篇作为快排的学习笔记。快排的基本思想快速排序是典型的分治算法,理解了快排的思想,很容易写出递归版的代码。快排分...
  • sixdaycoder
  • sixdaycoder
  • 2015年07月14日 16:20
  • 1127

快速排序算法原理与实现

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排...
  • hu_xinxin
  • hu_xinxin
  • 2013年06月18日 15:22
  • 1504
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法之快速排序算法
举报原因:
原因补充:

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