java insertsort 插入排序

2021-07-06 06:59:03 字數 1042 閱讀 7700

package cn.插入排序_2015_10_30;

/** 2015.10.30 8:50 插入排序測試 

*/public class insertsort

for(int i=1;iint j = i-1; //找到當前索引的前乙個索引

int temp = intarray[i];  //將當前索引的值儲存到乙個臨時變數中去

while(j>=0 && temp < intarray[j])

/** 迴圈結束後,就找到要插入的位置,別管是j>=0 不滿足,還是temp > intarray[j]

* 不滿足,要插入的位置就是j+1,因為是intarray[j]元素不滿足了,那麼就是插入到後面

* ,將j+1後面的元素,都依次向後移動一位

*/int k=i-1; //i,下標,對應的值是被插入的元素

while(k>j)

//最後,j+1元素的位置,就空出來了,將temp值,覆蓋過去

intarray[j+1] = temp;

}for(int i=0;isystem.out.print(intarray[i]+" ");

}system.out.println();

}總結:

大概思路:將資料分為兩部分,一部分有序,一部分無序;

採用後向插入原則,將無序部分的第乙個元素,插入到有序部分,從後往前依次比較;

主要分為三個步驟吧:

第一:用乙個while迴圈先找到要插入位置的下標 ,如j+1

第二:再用乙個while迴圈,將陣列下標範圍在[j+1,i=1]  之間的元素,依次往後移動乙個位置,這樣的話,下標為j+1的位置,就空出來了

第三:將i+1位置的值覆蓋到j+1位置上,

這樣就將無序部分的第乙個資料插入到前面有序部分了;

再來乙個for迴圈,即可;

後來,看了別人的**,主要區別在於,一邊找,一邊移動;**比較簡潔;

剛開始,最好自己在紙上把流程寫出來,這樣的話,可能更好的理解for迴圈,while迴圈,if等等吧;才能創造不同,然後再向別人學習,看看別人的**;不要背**;

插值查詢 插值搜尋

這是一種和二分比較相似的查詢的演算法,不過不同的是,對於分布比較均勻的較大的陣列,插值查詢有時能夠一次就搜尋到位.為什麼能夠這麼快呢 看網上沒有什麼關於這種演算法的描述,我就來描述一下吧.首先要知道一點,這種搜尋方式只能夠針對順序表進行,再乙個要理解順序表中的乙個特點,在順序表中查詢是否存在乙個值,...

Matlab資料插值 內插 外插

插值就是已知一組離散的資料點集,在集合內部某兩個點之間 函式值的方法。一 一維插值 插值運算是根據資料的分布規律,找到乙個函式表示式可以連線已知的各點,並用此函式表示式 兩點之間任意位置上的函式值。插值運算在訊號處理和影象處理領域應用十分廣泛。1 一維插值函式的使用 若已知的資料集是平面上的一組離散...

Matlab資料插值 內插 外插

matlab資料插值 內插 外插 插值就是已知一組離散的資料點集,在集合內部某兩個點之間 函式值的方法。一 一維插值 插值運算是根據資料的分布規律,找到乙個函式表示式可以連線已知的各點,並用此函式表示式 兩點之間任意位置上的函式值。插值運算在訊號處理和影象處理領域應用十分廣泛。1 一維插值函式的使用...