两种插入类排序:
直接插入排序:
public static int[] insertSort(int[] arr){ int i,j,temp; int n=arr.length; for(i=1; i<n; i++){ temp=arr[i]; j=i-1; while(j>=0&&temp<arr[j]){ arr[j+1] = arr[j]; --j; } arr[j+1] = temp; } return arr; }
二分插入排序:
public static int[] binarySort(int arr[]){
int n = arr.length; int i, j,temp,low,mid,high; for(i=1; i<n; i++){ temp=arr[i]; low=0; high=i-1; while(low<=high){ mid=(low+high)/2; if(arr[mid]>temp) high=mid-1; else low = mid+1; } for(j=i-1;j>=high+1; --j) arr[j+1]=arr[j]; arr[low]=temp; } return arr; }
两种交换类排序:
冒泡排序:
public static int[] bubbleSort(int[] arr){ int temp;
int n = arr.length; boolean flag = false; for(int i=n-1; i>=1; i--){ for(int j=1; j<=i; j++){ if(arr[j-1]>arr[j]){ temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; flag=true; } } if(!flag) return arr; } return arr; }
快速排序:
ublic static int[] quickSort(int arr[], int low, int high){ if(low<high){ int temp = arr[low]; int i = low, j = high; while(i!=j){ while(i<j && arr[j]>=temp) --j; if(i<j){ arr[i] = arr[j]; i++; } while(i<j && arr[i]<temp) ++i; if(i<j){ arr[j]=arr[i]; j--; } } arr[i] = temp; quickSort(arr, low, i-1); quickSort(arr, i+1, high); return arr; } return arr; }