//冒泡排序
public static void sort1(int[] arr){
for (int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
//和后一个数相比,比它大就交换
if(arr[i]>arr[j]){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
//选择排序
public static void sort2(int[] arr){
for (int i=0;i<arr.length-1;i++){
int minIndex = i;
//求最小值的位置
for(int j=i+1;j<arr.length;j++){
if(arr[minIndex]>arr[j]){
minIndex = j;
}
}
//和最小值交换位置
if(minIndex!=i){
int tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}
//快速排序
public static void sort3(int[] arr,int low, int high){
int mediaVal, mediaIndex;// pivot->位索引;p_pos->轴值。
if(low<high){
mediaIndex = low;
mediaVal = arr[mediaIndex];
for (int i = low + 1; i <= high; i++){
//将小于中间数的放到前面,大于的放到后面
if (arr[i] < mediaVal) {
mediaIndex++;
int tmp = arr[mediaIndex];
arr[mediaIndex] = arr[i];
arr[i] = tmp;
}
}
//将中间数放到中间
int tmp = arr[low];
arr[low] = arr[mediaIndex];
arr[mediaIndex] = tmp;
sort3(arr, low, mediaIndex - 1);// 排序左半部分
sort3(arr, mediaIndex + 1, high);// 排序右半部分
}
}
冒泡,选择,快速三种排序
最新推荐文章于 2024-09-04 14:45:59 发布