冒泡算法(从小到大):
1、依次比较相邻的两个元素。若第一的值大于第二的值,则交换它们;
2、每轮将会把大值交换到数组尾;
3、因而每轮比较的次数越来越少;
public class BubbleSort_1 { public void BubbleSort_1(int[] score) { // 方法一: int j, i, temp; for (i = score.length - 1; i > 0; i--) {// 从小到大 for (j = 0; j < i; j++) { if (score[j] > score[j + 1]) {// 每轮把最大的交换到后面 temp = score[j]; score[j] = score[j + 1]; score[j + 1] = temp; } } showDate(score); // 打印 } } public void BubbleSort_2(int[] score) { // 方法二 int j, i, temp; for (i = 0; i < score.length; i++) {// 从小到大 for (j = i; j < score.length; j++) { if (score[i] > score[j]) { /* >时,每轮最小的交换到前面,<时每轮最大的交换到前面 */ temp = score[i]; score[i] = score[j]; score[j] = temp; } } showDate(score);// 打印 } } public void BubbleSort_3(int[] score) { // 方法三: int j, i, temp; for (i = 1; i < score.length; i++) {// 从大到小 temp = score[i]; for (j = i; j > 0 && score[j] > score[j - 1]; j--) {// 每轮最大的交换到前面 score[j] = score[j - 1]; } score[j] = temp; showDate(score); // 打印 } } public void showDate(int[] n) { for (int i = 0; i < n.length; i++) { System.out.print("score[" + i + "] = " + n[i] + " "); } System.out.println(); } public static void main(String[] args) { BubbleSort_1 s = new BubbleSort_1(); int score[] = { 88, 99, 44, 77, 33, 22 }; s.BubbleSort_1(score); //s.BubbleSort_2(score); //s.BubbleSort_3(score); } }
时间: 2024-09-27 03:56:24