常見演算法練習

2021-08-04 16:59:52 字數 1687 閱讀 7858

1、線性查詢

/**

* 線性查詢

*/public void

linearsearch(int value)

}}

2、二分法查詢,需要先對陣列進行排序後,再進行二分法查詢

public void 

binarysearchforvalue(int searchnum)

else if(searchnum < array[middleindex])

else

}}

3、氣泡排序,首先要確定乙個目標,然後再兩兩比較,向設立的目標位置進行移動

public void 

bubblesort()}}

}

4、氣泡排序2

public void 

bubblesort2()

count++;

} }

system.out

.println("

執行次數為

: "+count);

}

5、選擇排序 首先假設當前位置i為最小值,i代表當前需要處理的位置,然後進行比較,找到array[minmum] >array[j]的值,並記錄下來,再一輪比較後獲得最小的值的座標,再把這個下標的值跟當前處理位置i進行交換。

public void 

selectsort()

}swap(i,minmum);

}}

6、插入排序 假設左邊的陣列是已經全部排序好的陣列,因為i=0是已經排序好的,因為只有乙個數字,所以序號從i=1開始,記錄下當前的用於比較的key,比較前面乙個數是不是比key大,如果是則array[j-1] 的值移動到array[j]。到最後,將key填入挖出來的位置也就是j。

/**

* insertsort

*/public void

insertsort()

array[j] = key;

}}

7、shell排序(希爾排序)

public class shellsort 

while(gap > 0)

arr[j + gap] = key;

//因為最後的

j-=gap

所以需要變成

j+gap

否則會越界

/**插入排序結束*/}

gap /= 3;//

減小跨度

gap,當

(gap / 3 < 1)

時因為是

int

型別會變為0}

}public void

shellsort2(int array)

while(gap > 0)

array[j+gap] = keyvalue;

} gap /= 3;}

}public static void

main(string args);

shellsort sort = new shellsort();

sort.shellsort2(testarray);

for (int i = 0

; i < testarray.length

; i++)

}}

演算法 常見演算法題

演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...

python常見基礎小練習

1.輸入乙個年份,判斷是否為閏年。條件1 不能被100整除且能被4整除 條件2 被400整除 世紀年 year int input 請輸入乙個年份 if year 4 0 and year 100 0 print d年是閏年 year elif year 400 0 print d年是閏年 year...

鍊錶常見操作練習

鍊錶是乙個很重要的資料結構,一直沒有好好的寫過練習,這次放假,好好練習一下。1 定義鍊錶節點 include include include typedef struct int node node 2 合併兩個有序鍊錶 版本1 node merge node p,node q else while...