演算法描述:
直接插入排序(straight insertion sort)的基本思想是:把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。
演算法分析:
時間複雜度:o(n^2)
空間複雜度:o(1)
插入排序可以做到穩定性
舉例說明:
給 5 4 3 2 1排序:
i=1 && j=0:4 5 3 2 1
i=2 && j=1 : 4 3 5 2 1
i=2 && j=0 : 3 4 5 2 1
i=3 && j=2 : 3 4 2 5 1
i=3 && j=1 : 3 2 4 5 1
i=3 && j=0 : 2 3 4 5 1
i=4 && j=3 : 2 3 4 1 5
i=4 && j=2 : 2 3 1 4 5
i=4 && j=1 : 2 1 3 4 5
i=4 && j=0 : 1 2 3 4 5
code:
public class insertionsort
for (int i = 1; i < arr.length; i++)
} }public static void swap(int arr, int i, int j)
public static void printarray(int arr)
for (int i = 0; i < arr.length; i++)
system.out.println();
} public static void main(string args) ;
insertionsort(arr);
printarray(arr);
}}
資料結構之插入排序 折半插入排序
排序思路 通過折半查詢的方式找到合適的插入位置再插入。演算法實現 public class biinsertsort else 插入點在 mid 1,right left mid 1 直到找到合適的位置 left或right 1 接下來就將left right 1後的元素後移 for int j i...
資料結構之 插入排序
包括 直接插入排序,二分插入排序 又稱折半插入排序 鍊錶插入排序,希爾排序 又稱縮小增量排序 假定這個陣列的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置為止.這具演算法在排完前k個數之後,可以保證a 1 k 是區域性有序的...
資料結構之插入排序
插入排序有,直接插入排序 折半插入排序 2 路插入排序和表排序。如果了解了這些排序的思路,那麼 也就容易理解了。直接插入排序思路是 把第乙個當做已排好序的,直接從第二個開始記為當前資料 當前資料需要儲存到a 0 把a 0 當做乙個哨子 然後用當前資料跟前面的資料比下去,大於當前資料的數都往後移一位。...