归并排序
无序数组9,8,7,0,2,4,1
图解归并排序
public void mergeSort(int[] ints,int left,int right){
if(left<right){
int mid = (right+left)/2;
// 拆分数组
mergeSort(ints,left,mid);
mergeSort(ints,mid+1,right);
// 合并排序
merge(ints,left,mid,right);
}
}
public void merge(int[] ints, int left, int mid, int right) {
int[] temp = new int[ints.length];
// 左边起点
int left1 = left;
// 右边起点
int left2 = mid+1;
// 当前位置
int loc = left;
// 循环挪动指针
while (left1<=mid && left2<=right){
if(ints[left1]>ints[left2]){
temp[loc] = ints[left2];
left2++;
}else{
temp[loc] = ints[left1];
left1++;
}
loc++;
}
// 比较完,还剩下最后一个元素没有存入到临时变量中
while (left1<=mid){
temp[loc++]=ints[left1++];
}
while (left2<=right){
temp[loc++]=ints[left2++];
}
// 将临时变量赋值给原数组
for(int i=left;i<=right;i++){
ints[i] = temp[i];
}
}
冒泡排序
无序数组9,8,7,0,2,4,1
public static void bubbleSort(int[] a){
int n = a.length;
for(int i=0;i<n-1;i++){
boolean flag = false;
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
a[j+1] = a[j]+a[j+1];
a[j] = a[j+1] - a[j];
a[j+1] = a[j+1]-a[j];
flag=true;
}
}
if(!flag){
break;
}
}
System.out.println(Arrays.toString(a));
}