突发奇想的想看看以前学的排序算法有没有忘记,于是把冒泡和排序算法重新写一遍,果然是忘记了.好像我这风华正茂的年纪不该这么健忘啊...
忘了就忘了吧,重新写一遍,应该能记得再久一点....
java冒泡排序:
static void bubbleSort(int[] r){
int exchange = r.length-2;
while(!(exchange==0)){
int bound = exchange;
exchange = 0;
for(int i=0; i<=bound; i++){
if(r[i]>r[i+1]){
int k = r[i];
r[i] = r[i+1];
r[i+1] = k;
exchange =i; //记录交换发生的位置,提高效率
}
}
}
java快速排序:
public int partition(int[] r, int first, int end){
int i = first;
int j = end;
int temp;
while(i<j){
while(i<j && r[i]<=r[j]) {j--;} //右侧扫描
if(i<j){
temp = r[i];
r[i] = r[j];
r[j] = temp;
i++;
}
while(i<j &&r[i]<=r[j]) {i++;}; //左侧扫描
if(i<j){
temp = r[i];
r[i] = r[j];
r[j] = temp;
j--;
}
}
return i;
}
//让人膜拜的嵌套
public void quickSort(int[] r, int first, int end){
int pivot ;
if(first < end){
pivot = partition(r, first, end);
for(int i=0; i<r.length; i++){
System.out.print("r["+i+"]= "+r[i]+",");
}
System.out.println(pivot);
quickSort(r, first, pivot-1);
quickSort(r, pivot+1, end);
}
}