- 冒泡排序
public static void bubbleSort(int[]arr){
if(arr==null||arr.length<2){
return;
}
for(int i=arr.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(arr[j]>arr[j+1]){
swap(arr,j,j+1);
}
}
}
}
public static viod swap(int []arr,i,j){
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
- 插入排序
public class insertionSort {
public static void insertionsort(int[]arr){
if(arr==null||arr.length<2){
return;
}
for(int i=1;i<arr.length;i++){
for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){ //假设前面的已经排好序,然后小于就交换
swap(arr,arr[j],arr[j+1]);
}
}
}
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
}
- 选择排序(需要引入变minIndex)
public static void selectionSort(int[]arr){
if(arr==null||arr.length<2){
return;
}
for(int i=0;i<arr.length-1;i++){
int minIndex=i;
for(int j=j+1;i<arr.length;j++){
minIndex=arr[minIndex]>arr[j]? j : minIndex;
}
swap(arr,minIndex,i);
}
}
public static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
- 归并排序
public class margeSort {
public static void margesort(int[]arr){
if(arr==null||arr.length<2){
return;
}
margeSorted(arr,0,arr.length-1);
}
public static void margeSorted(int[]arr,int l,int r){
if(r==l){
return;
}
int mid=1+((r-l)>>1);
margeSorted(arr,l,mid);
margeSorted(arr,mid+1,r);
marge(arr,l,mid,r);
}
public static void marge(int[]arr,int l,int m,int r){
int[]help=new int[r-l+1]; //辅助数组
int i=0;
int p1=l;
int p2=m+1;
while(p1<=m&&p2<=r){
help[i++]=arr[p1]<arr[p2]?arr[p1++]:arr[p2++];
}
while(p1<=m){
help[i++]=arr[p1++]; //总有一个是先完的,剩下的一个也加入help数组
}
while(p2<=r){
help[i++]=arr[p2++];
}
for(int j=0;j<help.length;j++){
arr[l+j]=help[j];
}
}
}
- 堆排序
在这里插入代码片