1.冒泡排序:
public static void bubbleSort(int[] arr) {
int temp;
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
if(arr[i]>arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
2.选择排序
public static void selectSort(int[] arr) {
int temp;
for(int i=0;i<arr.length;i++) {
int min=i;
//选出该轮比较中最小的数
for(int j=i+1;j<arr.length;j++) {
//用每次选出的最小值和接下来的数进行比较.
if(arr[min]>arr[j]) {
min=j;
}
}
//相比冒泡排序,减少交换数据的次数,提高效率
if(min!=i) {
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
}
3.二分排序
public static void binarySort(int[] arr) {
int len=arr.length;
int key=0;
int low=0,high=0,mid=0;
for(int i=0;i<len;i++) {
key=arr[i];
low=0;
high=i-1;
while(low<=high) {
mid=(low+high)/2;
if(key<arr[mid])
high=mid-1;
else
low=mid+1;
}
for(int j=i-1;j>high;j--) {
arr[j+1]=arr[j];
}
arr[high+1]=key;
}
}
4.插入排序
public static void insertSort(int[] arr) {
for(int i=1;i<arr.length;i++) {
int cur=arr[i];
int m=i;
for(int j=i-1;j>=0;j--) {
if(arr[j]>cur) {
arr[j+1]=arr[j];
m=j;
}
else
break;
}
arr[m]=cur;
}
}
5.归并排序
public static void mergeSort(int[] arr,int left,int right) {
if(left>=right)
return;
int mid=(left+right)/2;
mergeSort(arr,left,mid);
mergeSort(arr,mid+1,right);
merge(arr,left,mid,right);
}
public static void merge(int[] arr,int left,int mid,int right) {
int[] temp=new int[arr.length];
int left2=mid+1;
int start=left;
int startCopy=left;
while(left<=mid && left2<=right) {
if(arr[left]<=arr[left2]) {
temp[start++]=arr[left++];
}else {
temp[start++]=arr[left2++];
}
}
while(left<=mid) {
temp[start++]=arr[left++];
}
while(left2<=right) {
temp[start++]=arr[left2++];
}
while(startCopy<=right) {
arr[startCopy]=temp[startCopy];
startCopy++;
}
}
6.快速排序
public static void quickSort(int[] arr,int l,int r) {
if(l<r) {
int x=arr[l];
int i=l,j=r;
while(i<j) {
while(i<j && arr[j]>x) {
j--;
}
if(i<j) {
arr[i]=arr[j];
i++;
}
while(i<j && arr[i]<x) {
i++;
}
if(i<j) {
arr[j]=arr[i];
j--;
}
}
arr[i]=x;
quickSort(arr,l,i);
quickSort(arr,i+1,r);
}
}
测试代码:
public static void printArr(int[] arr) {
for(int a:arr) {
System.out.print(a+"\t");
}
}
public static void main(String[] args) {
int[] arr= {3,2,7,9,5,10,8,4,1};
//bubbleSort(arr);
//printArr(arr);
//selectSort(arr);
//printArr(arr);
//quickSort(arr,0,arr.length-1);
//printArr(arr);
//binarySort(arr);
//printArr(arr);
//insertSort(arr);
//printArr(arr);
mergeSort(arr,0,arr.length-1);
printArr(arr);
}