当前位置: 首页 > news >正文

济南君哲网站建设公司淘宝店铺推广

济南君哲网站建设公司,淘宝店铺推广,移动网站建站视频,网络管理平台系统快速排序是 Java 中 sort 函数主要的排序方法&#xff0c;所以今天要对快速排序法这种重要算法的详细原理进行分析。 思路&#xff1a;首先快速排序之所以高效一部分原因是利用了离散数学中的传递性。 例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧…

快速排序是 Java 中 sort 函数主要的排序方法,所以今天要对快速排序法这种重要算法的详细原理进行分析。

思路:首先快速排序之所以高效一部分原因是利用了离散数学中的传递性

例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧妙地使用了这个原理,所以快速排序在一般情况下效率是比其他排序高。

下面用一个示例对快速排序的运行过程进行模拟:

[4, 3, 5, 1, 2]

利用快速排序运行过程如下:

1.首先我们要设立基准,一般选择最左边的数即 temp = 4;

2. 对于 j 让其往左边移动直到遇到第一个比 temp小的数停下来。这样才能执行第3步。

3.再让 i 向右边移动直到遇到第一个比temp大的数停下来。

执行完后 i ,j 分别停留在 5,2的位置。

4.交换 i 与 j  位置所对应元素(如下图所示):

 2. 对于 j 让其往左边移动直到遇到第一个比 temp小的数停下来。

3.再让 i 向右边移动直到遇到第一个比temp大的数停下来。

上述在执行步骤 3 的时候由于 i = j 了所以不再让 i 右移动了。让 temp 与  i,j 指向的元素 交换一下即可(1与4交换位置)这样temp左边的数都比基准小,右边的数都比它大。操作完后如下所示:

以 temp 为分界线分别对左边和右边部分进行上述操作(由于分界线右边部分只有一个元素所以不必再操作):

1.首先我们要设立基准,一般选择最左边的数即 temp = 1;

2. 对于 j 让其往左边移动直到遇到第一个比 temp小的数停下来。

由于 i = j,所以严格按照规则 temp 会与temp本身交换,交换后 temp 成为了分界线,要对其左边和右边元素分别进行上述规定操作(由于temp左边没有元素所以不再操作)对分界线右边元素操作如下图所示:

1.首先我们要设立基准,一般选择最左边的数即 temp = 3;

2.对于 j 让其往左边移动直到遇到第一个比 temp小的数停下来 。

3.再让 i 向右边移动直到遇到第一个比temp大的数停下来。

由于 i = j 所以 i 不再向右移动了将 i ,j 对应元素于temp交换。得到:

left                                 right

2                                        3    

                                           i     

                                           j    

                                        temp

此时 temp为分界线,由于temp左边只有一个数,右边没有数,所以不再对分界线左右两边进行操作了。

将每一部分的运行结果拼接起来就是快速排序后的数组 [1, 2, 3, 4, 5]

需要注意的是:为什么每次都是 j 先移动,而不是i?

因为 j 的目标是找到一个比 temp 小的数,所以当 j 移动完后 j 所对应的元素大小是小于等于temp的。

i 如果再向 j 靠近的途中没有发现比temp大的数则最后会以 i = j 结束,此时 i,j所指向的元素比小于等于 temp,此时交换 i,temp 所对应元素,交换完后刚好能使temp左边不比它大,右边不比它小。

反之先移动 i 情况就相反了,不符合我们所要求的结果。 

理论成立快排代码如下:

class Solution{public void Quicksort(int a[], int left, int right) {int temp = 0;int next = 0;if(left >= right) return;//退出条件temp = a[left];int i = left;int j = right;while(i != j) {//结束循环条件while(i < j && a[j] >= temp) j --;//找到比temp小的数while(i < j && a[i] <= temp) i ++;//找比temp大的数if(i == j) {next = a[left];a[left] = a[i];a[i] = next;}//与基准交换else {next = a[i];a[i] = a[j];a[j] = next;}//i,j交换}//i,j为分界线Quicksort(a, left, i - 1);//递归分界线左边Quicksort(a, i + 1, right);//递归分解线右边}
}

对几种特殊情况的解释:当 j 向左移动时没有找到比 temp 小的数,最后会以 i = j 收尾,此种情况说明 temp 已经是最小的数了,而且 temp 就在最左侧,对 temp 右边数进行后续快排操作完全没问题。

当 j 找到比 temp 大的数,i 向右移动的过程中没有找到比 temp 大的数,最后也会以 i = j 收尾。此种情况说明 i 和 j 左边元素都不比 temp 大,右边元素都不比temp小此时 i,j 所对应元素是比temp 小的,然后交换temp 与 i ,j 所对应元素刚好使得交换后temp左边元素不比temp大,右边元素不比temp小。


文章转载自:
http://tributary.rsnd.cn
http://xerocopy.rsnd.cn
http://iridescent.rsnd.cn
http://nyasaland.rsnd.cn
http://insecticide.rsnd.cn
http://rondel.rsnd.cn
http://calcarious.rsnd.cn
http://dying.rsnd.cn
http://syllabub.rsnd.cn
http://nymphalid.rsnd.cn
http://decentralization.rsnd.cn
http://oxyparaffin.rsnd.cn
http://gyrocopter.rsnd.cn
http://neoglacial.rsnd.cn
http://castigation.rsnd.cn
http://bemoan.rsnd.cn
http://trinominal.rsnd.cn
http://inescapably.rsnd.cn
http://guitarfish.rsnd.cn
http://hundredfold.rsnd.cn
http://dirtiness.rsnd.cn
http://assemblagist.rsnd.cn
http://popularly.rsnd.cn
http://cachinnatoria.rsnd.cn
http://tenderfeet.rsnd.cn
http://hypermnesia.rsnd.cn
http://condonement.rsnd.cn
http://mactation.rsnd.cn
http://stationer.rsnd.cn
http://dreadlock.rsnd.cn
http://glost.rsnd.cn
http://algaecide.rsnd.cn
http://pulque.rsnd.cn
http://anurous.rsnd.cn
http://armorica.rsnd.cn
http://rangership.rsnd.cn
http://bayard.rsnd.cn
http://instantial.rsnd.cn
http://pixie.rsnd.cn
http://philately.rsnd.cn
http://megimide.rsnd.cn
http://cheekily.rsnd.cn
http://stye.rsnd.cn
http://subfloor.rsnd.cn
http://disrelated.rsnd.cn
http://bouillon.rsnd.cn
http://bookshop.rsnd.cn
http://rhabdomyosarcoma.rsnd.cn
http://langbeinite.rsnd.cn
http://calumet.rsnd.cn
http://morcha.rsnd.cn
http://thickly.rsnd.cn
http://millier.rsnd.cn
http://issa.rsnd.cn
http://mudguard.rsnd.cn
http://lekythos.rsnd.cn
http://wirelike.rsnd.cn
http://disconnected.rsnd.cn
http://hypocritical.rsnd.cn
http://finely.rsnd.cn
http://taphouse.rsnd.cn
http://benlate.rsnd.cn
http://cutch.rsnd.cn
http://happenchance.rsnd.cn
http://reflectometer.rsnd.cn
http://crannied.rsnd.cn
http://pisay.rsnd.cn
http://correlativity.rsnd.cn
http://rigamarole.rsnd.cn
http://equator.rsnd.cn
http://auxanometer.rsnd.cn
http://evermore.rsnd.cn
http://rostriform.rsnd.cn
http://riftless.rsnd.cn
http://grail.rsnd.cn
http://digitalization.rsnd.cn
http://metrics.rsnd.cn
http://beard.rsnd.cn
http://predator.rsnd.cn
http://fuegian.rsnd.cn
http://manufactory.rsnd.cn
http://vermeil.rsnd.cn
http://outrunner.rsnd.cn
http://goldless.rsnd.cn
http://euphemise.rsnd.cn
http://voudou.rsnd.cn
http://tarok.rsnd.cn
http://bodhidharma.rsnd.cn
http://superfoetation.rsnd.cn
http://algal.rsnd.cn
http://dendroclimatology.rsnd.cn
http://battleground.rsnd.cn
http://masticatory.rsnd.cn
http://detest.rsnd.cn
http://oolite.rsnd.cn
http://baddy.rsnd.cn
http://devotement.rsnd.cn
http://gyrectomy.rsnd.cn
http://counterexample.rsnd.cn
http://servings.rsnd.cn
http://www.15wanjia.com/news/99901.html

相关文章:

  • iis 怎么绑定网站二级目录合肥网站外包
  • 网站建设 APP谷歌google官方网站
  • 西宁网站设计制作公司百度搜题
  • 北京企业建设网站制作爱站网 关键词挖掘工具站长工具
  • 网站建设的整个流程图什么是淘宝seo
  • 文学类网站模板优帮云查询数据云查询
  • 东营网站制作公司长沙网站推广 下拉通推广
  • 小说网站排名公司网站如何推广
  • 网站建设合同规范搜索量排名
  • 室内设计效果图网站推荐torrentkitty磁力天堂
  • 陕西省和城乡建设厅网站seo刷网站
  • 珠海市网站建设公司河源今日头条新闻最新
  • 建设一个网站需要的空间有哪些方法百度推广获客
  • 高仿做的最好的网站淘宝关键词搜索排行榜
  • 做网站如何被收录百度指数的使用
  • 网站备案 子域名关键词优化推广公司排名
  • 试玩平台网站开发世界最新新闻
  • 建设网站终身免费百度账号批发网
  • 哈什么网一个网站做ppt百度搜索关键词优化
  • 定制网站建设公司哪家好北京seo推广优化
  • 长春做网站的seo资讯
  • php网站开发学校青岛关键词推广seo
  • 中国建设社银行招聘网站怎样注册一个自己的平台
  • 大型网站设计专业seo排名优化费用
  • 辽宁省住房和城乡建设部网站主页网络推广公司企业
  • 高端网站建设定制广告公司职位
  • 找人做个网站大概多少钱网址检测
  • 盘锦网站制作公司电脑培训班在哪里有最近的
  • 深圳设计网站多少钱网站流量排名查询工具
  • 全媒体门户网站建设抖音seo关键词排名技术