排序方法是经常用到的java基本知识。下边把基本的三大方法保存到这里,以作记录。
public class Sort {
private static void swap(int[] arr,int index1,int index2){
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
public static void main(String[] args) {
int[] arr = {5,9,3,6,2,4,9,5,8,1};
quickSort(arr,0,arr.length-1);
logArr(arr);
// swap(arr,0,1);
// System.out.println(arr[0]+","+arr[1]);
// swap2(arr, 0, 1);
// System.out.println(arr[0]+","+arr[1]);
}
public static void logArr(int[] arr){
for (int i : arr) {
System.out.print(i+"");
}
}
//选择排序法
public static void selector(int[] arr){
for (int i = 0; i <arr.length-1 ; i++) {
for (int j = i; j <arr.length ; j++) {
//逐一比较,把比他小的都换到前边来,从小到大
if(arr[i]>arr[j]){
swap(arr,i,j);
}
}
}
}
//冒泡排序法
public static void bubbleSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr,j,j+1);
}
}
}
}
public static void quickSort(int[] arr,int low,int high){
int h = quick(arr, low, high);
if(h>low){
quickSort(arr,low,h-1);
}
if(h<high){
quickSort(arr,h+1,high);
}
}
public static int quick(int[] arr, int low, int high) {
int l = low;
int h = high;
int temp = arr[low];
while (true) {
//从右到左,逐个和标准比较,直到发现比标准小的,保留位置
while(temp<=arr[h]){
if(h==low){
break;
}
h--;
}
//从左到右,逐个和标准比较,直到发现比标准大的,保留位置
while(temp>=arr[l]){
if (l == high) {
break;
}
l++;
}
//如果相交,说明左边的全小,右边的全大,跳出循环
if (l >= h) {
break;
}
//交换不符合条件的两个数
swap(arr,l,h);
}
//校验标准值,重新定义标准下标
swap(arr,low,h);
return h;
// if(h>low){
//
// quick(arr, low, h-1);
// }if(h<high){
//
// quick(arr,h+1,high);
// }
}