一、思路
1. 选择法排序
1. 把第一位和其他所有位比较,只要比第一位小的,就换到第一个位置来,比较数组长度-1次后,第一位就是最小的
2. 再从第二位和剩余的其他所有位进行比较,只要比第二位小,就换到第二个位置来,比较完后,第二位就是第二小的
3. 以此类推
2. 冒泡法排序
1. 从第一位开始,把相邻两位进行比较,如果前面的比后面的大,就把大的数据交换在后面,比较数组长度-1次后,最后一位就是最大的
2. 重复步骤1,但不用比较最后一位,相当于对除去最后一位的其它数的数组做冒泡排序
3. 以此类推
二、程序
public class Test {
public static void main(String[] args) {
int[] a = new int[]{18,85,46,62,9,37};
//排序前先把内容打印出来
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println(" "); //换行
/* 选择法排序
* 1. 把第一位和其他所有位比较,只要比第一位小的,就换到第一个位置来,比较数组长度-1次后,第一位就是最小的
2. 再从第二位和剩余的其他所有位进行比较,只要比第二位小,就换到第二个位置来,比较完后,第二位就是第二小的
3. 以此类推
*/
//最后一位不需要和其它位比较,所以外部循环到数组长度-1
for (int j = 0; j < a.length-1; j++) {
for (int i = j+1; i < a.length; i++) {
if(a[i] < a[j]) {
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println(" "); //换行
/*冒泡法排序
* 1. 从第一位开始,把相邻两位进行比较,如果前面的比后面的大,就把大的数据交换在后面,比较数组长度-1次后,最后一位就是最大的
2. 重复步骤1,但不用比较最后一位,相当于对除去最后一位的其它数的数组做冒泡排序
3. 以此类推
*/
for (int j = 0; j < a.length; j++) {
//外部第一次循环,内部循环需比较数组长度-1次,将最大位排到最后一位,外部第二次循环,内部循环需比较(原数组长度-1)-1次
for (int i = 0; i < a.length-j-1; i++) {
if(a[i] < a[i+1]) {
int temp = a[i+1];
a[i+1] = a[i];
a[i] = temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
}
三、结果
四、参考文章