/*** 二分查詢,找不到則返回一。
*@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...