排序算法
package com.wxkj.xiaojun;
import java.util.Arrays;
import java.util.Scanner;
public class TestArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] scores = new int[5];
Scanner input = new Scanner(System.in);
for(int i=0; i<5; i++) {
System.out.print("请输入第"+(i+1)+"次成绩:");
if(input.hasNextInt()) {
scores[i] = input.nextInt();
}else {
System.out.println("请重新输入。");
input.next();
i--;
}
}
//排序操作,快速排序(快排)
//Arrays.sort(scores);
/**选择排序
* 在当前数组所有的元素中,寻找目前需要的元素,称为选择
* 此处排序的方法为:
* 1、取数组中的一个元素
* 2、使用当前元素与数组中的所有元素进行比较
* 3、如果当前元素比对比元素小,则不改变,反之将对比元素作为当前元素。
* 4、将原当前元素放在现当前元素的原本位置
* 5、循环执行以上四步。
* 6、以上5步排好一个元素,继续循环,将整个数组遍历一次。
* 注意:内层循环的初始条件为外层循环变量的当前值。
*/
// for(int j=0;j<5;j++) {
// for(int i=j;i<5;i++) {
// if(scores[j] > scores[i]) {
// int y = scores[i];
// scores[i] = scores[j];
// scores[j] = y;
// }
// }
// }
/**
* 冒泡排序
* 相邻两个元素进行比较,较小(较大)的元素排前面(换位),此种方式称为冒泡排序。
*
* 分析:for循环遍历数组,每次取当前索引元素与后一个元素进行对比
*
*
*
*
* 12 89 78 100 56
* 12 78 89 56 100 一次循环
* 12 78 56 89 100 二次循环
* 12 56 78 89 100 三次循环
*
* 100 56 89 102 2 j 比较次数 初始值
* 56 89 100 2 102 一 0 4 4 - 0
* 56 89 2 100 102 二 1 3 4 - 1
* 56 2 89 100 102 三 2 2 4 - 2
* 2 56 89 100 102 四 3 1 4 - 3
*
*/
for(int j=0;j<scores.length-1; j++) {
for(int i=0; i<scores.length-1-j; i++) {
if(scores[i] > scores[i+1]) {
int y = scores[i];
scores[i] = scores[i+1];
scores[i+1] = y;
}
}
}
//遍历数组
int num = scores.length;
System.out.print("您输入的成绩为:\t");
for(int i=0; i<5; i++) {
System.out.print(scores[i]+"\t");
}
}
}