JAVA⼀维数组的⼏种基本排序法// 以下都以从⼩到⼤的写法
1.冒泡排序
原理: 将相邻左右两个元素依次⽐较⼤⼩,不符合条件就交换位置
for(int i =0; i < arr.length ; i++){//进⾏的轮数
for(int j =0; j < arr.length -1; j++){
if(arr[j]> arr[j+1]){//前后⽐较,⼤的数交换到后边去
int temp = arr[j];
arr[j]= arr[j+1];
arr[j+1]= temp;
}
}
java定义一维数组并赋值
}
2.选择排序
原理:到数组中最⼩的元素将其放到第⼀位,到第⼆⼩的元素将其放到第⼆位,以此类推
for(int i =0; i < arr.length; i++){
int min = i;//保存最⼩数的下标
for(int j = i ; j < arr.length; j++){
if(arr[j]< arr[min]){//将最⼩值下标保存到min
min = j;
}
}
int temp = arr[i];
arr[i]= arr[min];
arr[min]= temp;//将最⼩值放到指定位置
}
3.插⼊排序
原理:将第⼀个元素视为有序数列,后边的元素依次从后向前进⾏⽐较并插⼊指定位置
for(int i =1; i < arr.length ; i++){//从第⼆个元素开始插⼊
for(int j = i ; j >0; j--){
if(arr[j]< arr[j-1]){
int temp =arr[j];
arr[j]= arr[j-1];
arr[j-1]= temp;
}
}
}
4.快速排序
原理: 将第⼀个元素视为基准数,将⽐基准数⼤的数放在基准数右边,⽐基准数⼩的数放在基准数左边,然后以基准数为中⼼,对其左右两边的数列依次进⾏此操作
public static void quickSort(int arr[],int left,int right){
if(left >= right){///递归停⽌的条件
return;
}
int i = left;
int j = right;//定义i,j指向开头结尾
int temp = arr[left];//保存基准数
while( i < j){
while( arr[j]>= temp && i < j){//⼀定是j先开始从后向前⽐基准⼩的数    j--;
}
while( arr[i]<= temp && i < j){//j就位后i出发从前向后⽐基准⼤的数  i++;
}
if( i < j){//交换
int temp =arr[i];
arr[i]= arr[j];
arr[j]= temp;
}
}
arr[left]= arr[i];
arr[i]= temp;//基准数归位
//此时第⼀轮结束
//开始递归
quickSort(arr, left , j-1);//左边
quickSort(arr, j +1, right);//右边
}