日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法——排序——插入排序图解动画

發布時間:2024/8/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法——排序——插入排序图解动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插入排序

  • 簡介
  • 代碼示例
  • 排序過程
  • 時間復雜度
    • 最差時間復雜度&平均時間復雜度
    • 最優時間復雜度
  • 空間復雜度
  • 穩定性

簡介

插入排序,一般也被稱為直接插入排序。對于少量元素的排序,它是一個有效的算法。插入排序是一種最簡單的排序方法,它的基本思想是將一個記錄插入到已經排好序的有序表中,從而一個新的、記錄數增1的有序表。在其實現過程使用雙層循環,外層循環對除了第一個元素之外的所有元素,內層循環對當前元素前面有序表進行待插入位置查找,并進行移動。直到所有元素遍歷完畢,排序結束。

文章中使用的動畫網站地址,限 pc: 排序算法動畫
http://www.donghuasuanfa.com/sort

代碼示例

來自百度百科

public class Insertion{public static void sort(Comparable[] a){//將a[]按升序排列int N=a.length;for (int i=1;i<N;i++){//將a[i]插入到a[i-1],a[i-2],a[i-3]……之中for(int j=i;j>0&&(a[j].compareTo(a[j-1])<0);j--){Comparable temp=a[j];a[j]=a[j-1];a[j-1]=temp;}}} }

排序過程

時間復雜度

最差時間復雜度平均時間復雜度最優時間復雜度
O(N2)O(N^2) O(N2)O(N2)O(N^2) O(N2)O(N)O(N) O(N)

最差時間復雜度&平均時間復雜度

每輪比較的過程是選擇一個元素,然后和已經排序數組進行逐個比較,尋找合適的位置,此過程的時間復雜度為N。每輪比較后將當前元素插入到合適的位置。
然后共比較N輪。所以時間復雜度近似為:O(N2)O(N^2) O(N2)

最優時間復雜度

當數組為已排序數組,則每個元素只需要比較一次,所以對應的時間復雜度為: O(N)O(N)O(N)
動畫示例:

空間復雜度

插入排序由于無需額外空間,所以空間復雜度為 O(1)。

穩定性

兩個元素的值相同時如果最終排序完成后位置不變,則為穩定排序,如果位置變更則為不穩定排序。
排序算法中,如果數字相同,則無需變更位置,避免額外的操作。

插入排序,比較判斷時,無需更換位置也能達到排序效果,所以為穩定排序。

總結

以上是生活随笔為你收集整理的算法——排序——插入排序图解动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。