排序演算法(一) 插入排序

2021-08-09 19:12:14 字數 1259 閱讀 5994

一、插入排序:直接插入、二分插入、希爾排序

基本思想:從前面已經排序好的資料中查詢合適的位置,將待排序資料插入到該位置(從後面向前找合適的位置)

1、直接插入排序

基本思想:從右向左查詢;從左邊已排序好的資料中查詢合適的位置,插入待排序的資料。

private static void derictinsert() ;

for (int i = 0; i < data.length; i++)

data[j + 1] = temp;

} system.out.println(arrays.tostring(data));

}

2、二分排序

基本思想:是直接插入排序的一種改進。從中間資料開始比較,並不斷縮小範圍,找到合適的問題,插入待排序資料。

private static void twopointsort() ;

for (int i = 0; i < data.length; i++) else

}for (int j = i - 1; j >= low; j--)

if (low != i)

} system.out.println(arrays.tostring(data));

}

3、希爾排序

希爾排序是插入排序的一種,也成縮小增量排序。

基本思想:先取乙個小於length的的整數d作為增量,所有相隔d的元素分為一組,進行直接插入排序。然後逐漸縮小d,重複前面的操作,直到d=1.

一般的初次取d為length/2

,以後每次減半,直到增量為1

假設待排序陣列為:49,38,65,97,76,13,27,49,55,04。

d的值依次為:5,3,1

public static void shellsort() ;

// 希爾排序

int d = data.length;

while (d > 1)

data[j + d] = temp;}}

} system.out.println(arrays.tostring(data));

}

排序演算法(一) 插入排序

首先,對排序演算法 輸入 n 個數 輸出 序列的乙個排序,使得a1 a2 an 待排序的數為key 插入排序演算法,是乙個對少量元素進行排序的有效演算法.其偽 如圖 插入排序演算法在形式上類似於我們平時打牌時,邊抽牌邊整理撲克牌的順序,我們將新的牌與手中已經整理好順序的撲克牌進行比較,最終將抽到的牌...

排序演算法 一 插入排序

演算法實現 insertsort.c include void insertsort int arr,int len int i 0,j 0,k 0 int tmp 0 for i 1 i 0 tmp演算法思想 保證被比較值的左側為有序,在將被比較的值插入到這個有序的佇列裡。例子分析 1.首先arr...

排序演算法(一)插入排序

在已經排好序的序列中插入乙個數值使其成為新的有序序列 教材定義 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中,直到全部記錄插入完成 教材的定義體現了在原序列上進行的一種排序 按照順序表的方式儲存的話,插入排序實際上就採用就地排序 空間複雜度o 1 每次都要從在已排好的子串行中...