面試中重要的排序演算法

2021-07-28 03:00:00 字數 2577 閱讀 7777

/**

* 二分查詢,找不到則返回一。

*@parama*

@param

key*

@return

*/public static int

binarysearch(int a,int key)

return -1;}

public static void

sort(int a, int left, int right)

public static void

merge(int data, int i, int m, int n)

while (i<=m)

tmparr[k++]=data[i];

while (j<=n)

tmparr[k++] = data[j];

} public static void

msort(int sr,int s,int t)

}/***

建堆(從

(n-1)/2

開始調整堆的結構)

*@parama*

@paramn*/

public static void

heapsort(int a,int n)

}/**

* 調整堆(從第

i個結點開始向下調整)

*@parama*

@paramn*/

public static void

adjustheapdown(int a,int i,int n)

else

break;

//若子節點的值比父節點的值,本來就是小根堆,同時說明樹的子結構也滿足要求,因此不需要繼續往下調整。

} a[i] = tmp;

}/**

* 調整堆(從第

i個結點開始向下調整)

*@parama*

@paramn*/

public static void

deletefromheap(int a,int i,int n)

}/**

* 快速排序

*@parama*

@param

low

陣列的下邊界

*@param

high

陣列的上邊界

*/public static void

quicksort(int a,int low,int high)

}/**

* 得到每次快排的索引

*@parama*

@param

low*

@param

high

*@return

*/public static int

getquickindex(int a,int low,int high)

while (a[i] <= tmp && i < j)

i++;

if (i < j)

}a[i]=tmp;

return i;

}/**

* 插入排序

*@parama*

@paramn*/

public static void

zhijiesort(int a,int n)

}//j

到i-1

的元素往後移動

if (j != i)

a[j] = tmp;

} }

}/**

* 選擇排序

*@parama*

@paramn*/

public static void

choicesort(int a,int n)

if (mini!=i)

}}/**

* 氣泡排序

*@parama*

@paramn*/

public static void

bublesort(int a,int n)

}printarray(a,

8);system.out

.println("");}}

public static void

printarray(int a,int n)

}

面試中的排序演算法總結

面試中的排序演算法總結 查詢和排序演算法是演算法的入門知識,其經典思想可以用於很多演算法當中。因為其實現 較短,應用較常見。所以在面試中經常會問到排序演算法及其相關的問題。但萬變不離其宗,只要熟悉了思想,靈活運用也不是難事。一般在面試中最常考的是快速排序和歸併排序,並且經常有面試官要求現場寫出這兩種...

總結資料結構中重要的排序演算法

1 直接插入排序 適合資料較小且資料較有序的數字序列。演算法思想 將乙個陣列先劃分成已排序好的部分和未排序好的部分,從未排序好的部分中獲取乙個關鍵數作為待排序數,在 已 排好序的序列中找到合適位置插入這個資料。需要乙個中間變數tmp存放每次獲取的關鍵數。程式 如下 void insertsort i...

面試排序演算法

private void swap int nums,int i,int j 每輪找出最小的值放在左側 private void selectionsort int nums swap nums,i,min 假設前i有序,把i 1的元素,通過交換插入到前面的i個中 private void inse...