排序演算法(一) 直接插入排序和希爾排序

2021-07-06 04:51:26 字數 1083 閱讀 8872

將乙個待排的資料插入到已經排序過的資料中去,並且資料依然保持有序。

1.取出待比較資料5

2.比8小,將8後移一位

3.比6小,將6後移一位

4.比4大,資料放入陣列

//插入temp

a[j + factor] = temp;

}return a;

}先將n個資料分為x(x=n/2)組,每組元素進行直接插入排序,再將其分為x/2組,每組依然進行直接插入排序,直到x=1,對全部元素進行直接插入排序。

ps:x叫做增量,因此希爾排序也叫做縮小增量排序

如果大家沒有被演算法思想搞暈,那麼一定還記得上面直接插入排序sort(int a,int factor)中這個factor引數,這個引數的作用就是希爾排序中的x,那麼實現演算法也就很簡單了。

public static int shellsort(int arr) 

return a;

}

排序演算法 一 直接插入排序和希爾排序

1 直接插入排序 直接插入排序 是一種簡單粗暴的排序演算法,即每一步都把乙個待排資料按其大小插入到乙個已排好序的序列當中,直到整個序列都排為有序為止。例如 要以公升序排下面這個序列 直接插入排序演算法的的最好情況就是當序列已經有序的時候,這時候只需要進行n 1次比較就行,也不用進行任何的資料移動,這...

排序 一 直接插入排序

1 直接插入排序 1 定義 直接插入排序 straight insertion sort 是一種最簡單的排序方法。它的基本操作是將乙個記錄插入到乙個長度為m 假設 的有序表中,使之仍保持有序,從而得到乙個新的長度為m 1 的有序表。2 演算法思路 設有一組關鍵字 k 1 k 2 k n 排序開始就認...

排序一 直接插入排序

基本思想 當插入第i i 1 個物件時,前面的i 1 項 元素已經排序完成,這時 用 第 i 項 和 前面的 i 1 項進行比較,然後把插入的位置後面的元素後移一位 再 插入該位置。實現一趟排序的步驟 找位置 移位 插入資料 實現 void insertsort int arr size t siz...