关于选择排序和快速排序--2017-09-24
生活随笔
收集整理的這篇文章主要介紹了
关于选择排序和快速排序--2017-09-24
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.前言
因?yàn)殚_(kāi)始習(xí)慣使用印象筆記,所以好久沒(méi)更新博客了,以后會(huì)計(jì)劃每月固定整理四篇博客,一方面鍛煉下寫(xiě)作能力,同時(shí)希望能夠幫到別人。 #####大概從基礎(chǔ)開(kāi)始把-算法數(shù)據(jù)結(jié)構(gòu)到源碼解析-暫時(shí)就這樣定了。2.關(guān)于算法的重要性
首先,其實(shí)現(xiàn)在大多數(shù)算法的實(shí)現(xiàn)都被封裝的差不多,除了一些大公司面試會(huì)問(wèn)到,工作用暫時(shí)需要的還不多,對(duì)于一個(gè)有志向向上發(fā)展的算法和數(shù)據(jù)結(jié)構(gòu)這種基礎(chǔ)是很重要了,不廢話了,進(jìn)入正題。3.選擇排序和插入排序
這兩種算法都是O(n^2)級(jí)別的算法,學(xué)習(xí)他們方便我們理解后續(xù)的歸并和快排等,而且算法的時(shí)間復(fù)雜度并不絕對(duì),特定的情況能夠選擇合適的算法才說(shuō)明真正的學(xué)會(huì)了算法。選擇排序
選擇排序可以說(shuō)是一個(gè)完全入門級(jí)別的算法,首先看原理圖
如圖所示,選擇排序首先會(huì)找到當(dāng)前數(shù)組中最小的元素,將其放在數(shù)組的第一個(gè)位置,再找到第二小的元素將其放在第二個(gè)元素位置,一次類推
我們使用兩層循環(huán)就刻以做到
2.插入排序
插入排序和選擇排序一樣都是O(n^2)級(jí)別的算法,但是不一樣的事,插入排序在相同元素比較多的情況,或者本身數(shù)列就接近有序情況下,插入排序進(jìn)化到一個(gè)O(n)級(jí)別的算法
簡(jiǎn)單實(shí)現(xiàn)圖
代碼實(shí)現(xiàn):
現(xiàn)在這種插入排序算法的效果要比選擇排序差很多,因?yàn)樵谘h(huán)中有很多的頻繁交換值的操作,所以有個(gè)插入排序的2.0版本
實(shí)現(xiàn)圖:
代碼:
public static int[] sort (int[] args) {for (int i = 1; i < args.length; i++) {//記錄當(dāng)前位置的元素int ret = args[i], j;//如果當(dāng)前元素比前一個(gè)小-則向前挪一位for (j = i; j > 0 && args[j - 1] > ret; j--) args[j] = args[j - 1];//將args[j] = ret;}return args; }結(jié)束:
到這選擇和插入排序就完成了,希望能給大家?guī)?lái)幫助
轉(zhuǎn)載于:https://www.cnblogs.com/uzies/p/9649498.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的关于选择排序和快速排序--2017-09-24的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 原创:陈士榘手下3个军长,比兵团参谋长还
- 下一篇: Java安全管理器