常见算法 (java实现)
2018-04-26 本文已影响0人
AlanFu
WechatIMG355.jpeg
1.冒泡算法 :大数像气泡一样往上冒。
public static void bubbleSort(int[] numbers){
int temp=0;
int size=numbers.length;
for(int i=0;i<size-1;i++){
for(int j=0;j<size-1-i;j++){
if(numbers[j]>numbers[j+1]){
temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
}
2.快速排序:找到中间值,分成左右两组,左边的数值均小于右边的数值。然后递归处理。直到排序为有序数据。简单高效。
查找中轴(最低位作为中轴)所在位置:
public static int getMiddle(int[] numbers,int low,int high){
int temp=numbers[low];
while(low<high){
while(low<high&&numbers[high]>=temp){
high--;
}
numbers[low]=numbers[high];
while(low<high&&numbers[low]<temp){
low++;
}
numbers[high]=numbers[low];
}
numbers[low]=temp;
return low;
}
递归实现
public static void quickSort(int[] numbers,int low,int high){
if(low<high){
int middle=getMiddle(numbers,low,high);
quickSort(numbers,low,middle-1);
quickSort(numbers,middle+1,high);
}
}
3.选择排序:在无序的数组中选择最小的数字与第一位交换,然后在剩下的数组再选择最小的数组与第二位交换。依次推进,直到有序。
public static void selectSort(int[] numbers) {
int size = numbers.length;
int temp;
for(int i=0;i<size-1;i++){
int k=i;
for(int j=size-1;j>i;j--){
if(numbers[j]<numbers[k]){
k=j;
}
}
temp=numbers[i];
numbers[i]=numbers[k];
numbers[k]=temp;
}
}