冒泡排序与快速排序
冒泡排序
int[] arr = new int[] {43,32,76,-98,0,64,33,21,32,99};
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
快速排序
1.交换data数组中索引为i和j的值
private static void swap(int[] data,int i,int j) {
int temp=data[i];
data[i]=data[j];
data[j]=temp;
}
private static void subSort(int[] data,int start,int end) {
if(start<=end) {
int base=data[start];
int low=start;
int high=end+1;
while(true) {
while(low<end &&data[++low]<base);
while(high>start &&data[--high]>base);
if(low<high) {
swap(data,low,high);
}
else {
break;
}
}
swap(data,start,high);
subSort(data,start,high-1);
subSort(data,high+1,end);
}
}
public static void quickSort(int[] data) {
subSort(data,0,data.length-1);
}
排序算法的复杂度与稳定性总结