public class CalDemo {
static int[] narrays = {12, 31, 4, 2, 20, 76, 18, 20,8, 29, 67, 2, 6, 10, 41, 38, 23, 15, 1, 0, 99};
/**
*1.冒泡排序
*两两比较,如果后者比前者大则交换位置
*每遍历一圈最大的数就会冒到最后,则确定了本轮比较中的最大值放到最后不动
*循环1、2直至遍历完所有
*时间复杂度O(n²)
*/
public static void bubbleSort(){
for(int i = 0; i<narrays.length-1; i++){
for(int j = 0; j<narrays.length-i-1; j++){
int a = narrays[j];
int b = narrays[j+1];
int temp = 0;
if(a > b){
temp = a;
narrays[j]=b;
narrays[j+1] =temp;
}
}
}
System.out.println(Arrays.toString(narrays));
}
/**
* 2.选择排序
* 找到所有数中最大值下标
*找到最大值的下标与最后一个位置的数值交换位置,这样每次找到的最大值则固定到最后
*循环1、2操作直至遍历找到所有
*时间复杂度O(n²),但是由于选择排序每轮比较只交换一次,所以实际性能要优于冒泡
*/
public static void changeSort(){
for(int i = 0; i<narrays.length; i++){
int max = 0;
for(int j = 0; j<narrays.length-i; j++){
if(narrays[max]<narrays[j]){
max = j;
}
int temp = narrays[narrays.length-i-1];
narrays[narrays.length-i-1] = narrays[max];
narrays[max] = temp;
}
}
System.out.println(Arrays.toString(narrays));
}
public static void main(String[] arg){
//CalDemo.bubbleSort(); //冒泡排序
CalDemo.changeSort();//选择排序
}
}
Java排序算法
最新推荐文章于 2024-06-14 15:02:13 发布