ipv6地址怎么排序?
不知道你所指的排序是哪種規則排序。排序算法分類 比較排序,時間復雜度為O(nlogn) ~ O(n^2),主要有:冒泡排序,選擇排序,插入排序,歸并排序,堆排序,快速排序等 非比較排序,時間復雜度可以達到O(n),主要有:計數排序,基數排序,桶排序等。
選擇排序每次比較的是數組中特定索引的值與全數組中每個值的大小比較,每次都選出一個最小(最大)值,如果當前索引的值大于之后索引的值,則兩者進行交換。
冒泡排序每次從數組的最開始索引處與后一個值進行比較,如果當前值比較大,則交換位置。這樣一次循環下來,最大的值就會排入到最后的位置。
插入排序類似于撲克牌的插入方法,選取待排列數組中的任意一個數字作為已排序的基準,再依次從待排序數組中取出數字,根據依次比較,將這個數字插入到已排序的數組中。
二分插入排序是直接插入排序的一個變種,利用二分查找法找出下一個插入數字對應的索引,然后進行插入。當n較大時,二分插入排序的比較次數比直接插入排序的最差情況好得多,但比直接插入排序的最好情況要差,所當以元素初始序列已經接近升序時,直接插入排序比二分插入排序比較次數少。二分插入排序元素移動次數與直接插入排序相同,依賴于元素初始序列。
希爾排序是一種更高效的插入排序,通過設計步長(gap)將數組分組,然后每組中單獨采用排序算法將每組排序,然后在縮小步長,進行重復的分組排序工作,直到gap變為1的時候,整個數組分為一組,算法結束。
例如:數組 [1, 4, 5, 2, 3, 9, 0, 7, 6],如果每次以數組長度的一半來作為步長,可以分解為以下步驟
1. gap: Math.floor(9 / 2) = 4;