/*
* 著作:姬灬剌
* 日期:2016年6月26日
* 功效:冒泡排序法
* 总结:
* 根本思想:通过看待排序序列从后向前(从下表较大的元素开端),顺次比拟相邻元素的排序码,
* 若发明逆序则交流,使排序码较小的元素逐步从后部移动到前部;
* 由于在排序进程中,各元素在不停地接近自己的地位,如果一次比拟下来没有产生任何转变,则解释
* 序列排序完成,故须要在排序进程中设置一个标识flag断定元素是不是交流过,从而减少没必要要的比拟
*
*/
package com.st.paixu;
import java.util.Random;
public class maopao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个int类型的数组,设置长度为length
int length = 8;
int[] arr = new int[length];
// 随机生成arr数组的元素
for (int i = 0; i < arr.length; i++) {
arr[i] = new Random().nextInt(10);
}
// 实例化一个MpSort类的对象
MpSort ms1 = new MpSort();
// 打印数组
System.out.println("排序前:");
ms1.printArr(arr);
ms1.sort(arr);
System.out.println("\n排序后:");
ms1.printArr(arr);
}
}
// 定义一个冒泡排序的类:MpSort
class MpSort {
public boolean flag = true;
// 成员办法:排序
// 外层重复设置排序次数
// 定义一个游标变量
public int[] sort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
// 内层重复进行地位冒泡
for (int j = 0; j < arr.length - 1 - i; j++) {
flag = true;
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = false;
}
}
//flag要在外层,即完成一次冒泡后,若flag值不更改成false,则未进入交流代码段,进而跳出重复
if (flag) {
break;
}
//System.out.println("\n排序中:");
//printArr(arr);
}
return arr;
}
// 打印数组
public void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
/*
* 著作:姬灬剌
* 日期:2016年6月26日
* 功效:冒泡排序法
* 总结: