快速排序
/**
* 第一次劃分大小
* @param array
* @param start
* @param end
* @return 掃描完畢指針的位置
*/
public int once(int[] array,int start,int end){
int i= start, j= end, temp=0;
while( i< j){
//右側(cè)掃描
while( i< j && array[ i]<= array[ j])
j--;
//較小的數(shù)置于前面
if( i< j){
temp= array[ i];
array[ i]= array[ j];
array[ j]= temp;
i++;
}
//左側(cè)掃描
while( i< j && array[ i]<= array[ j])
i++;
//較大的數(shù)置于后面
if( i< j){
temp= array[ i];
array[ i]= array[ j];
array[ j]= temp;
j--;
}
}
return i; //返回記錄的位置
}
public void quickSort( int[] array, int start, int end){
//int location;
if( start< end){
int location = once( array, start, end);
quickSort( array, start, location-1);
quickSort( array, location+1, end);
}
}
冒泡排序
/**
* 冒泡排序算法
* @param array 待排序數(shù)組
*/
public void bubble(int[] array){
for( int i=1; i< array.length; i++)
for( int j=0; j< array.length- i; j++){
if( array[j]> array[j+1]){
int t = array[j];
array[j] = array[j+1];
array[j+1] = t;
}
}
}
}
堆排序
//篩選法調(diào)整堆
public void Sift(int r[], int k, int m){
int i, j, temp;
i= k;
j=2* i+1; //置i為要篩的結(jié)點(diǎn),j為i的左孩子
while (j<=m){
if (j< m && r[j] < r[j+1])
j++; //比較i的左右孩子,j為較大者
if (r[i]> r[j])
break; //根結(jié)點(diǎn)已經(jīng)大于左右孩子中的較大者
else{
temp = r[i];
r[i] = r[j];
r[j] = temp; //將根結(jié)點(diǎn)與結(jié)點(diǎn)j交換
i = j;
j = 2*i+1; //被篩結(jié)點(diǎn)位于原來(lái)結(jié)點(diǎn)j的位置
}
}
}
//堆排序
public void heapSort(int r[ ], int n){
int i;
int temp;
//初始建堆,從最后一個(gè)非終端結(jié)點(diǎn)至根結(jié)點(diǎn)
for (i=n/2; i>=0; i--)
Sift( r, i, n);
//重復(fù)執(zhí)行移走堆頂及重建堆的操作
for (i=n-1; i>0; i--){
temp= r[ i];
r[ i]= r[0];
r[0]= temp;
Sift( r, 0, i-1);
}
}
選擇排序
/**
*
* @param array 待排序數(shù)組
* @param n 數(shù)組長(zhǎng)度
*/
public void selectSort( int[] array, int n){
/**
* i 無(wú)序區(qū)中第一個(gè)位置
* j 中間變量
* index 無(wú)序區(qū)中第一個(gè)位置吨枉,用于與無(wú)序區(qū)的其他r[j]進(jìn)行比較
* temp 用于交換變量
*/
int i, j, index, temp;
//對(duì)n個(gè)記錄進(jìn)行n-1趟簡(jiǎn)單選擇排序
for (i=0; i< n-1; i++){
index = i;
//在無(wú)序區(qū)中選取最小記錄
for (j= i+1; j< n; j++)
if (array[j] < array[index])
index = j;
if (index!= i){
temp = array[i];
array[i]= array[index];
array[index]= temp;
}
}
}
歸并排序(待續(xù)...)
如發(fā)現(xiàn)錯(cuò)誤岭埠,還望不吝指正為謝~