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