冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
public class BubbleSort{
public static void main(String[] args){
int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
for (int i = 0; i < score.length -1; i++){ //最多做n-1趟排序
for(int j = 0 ;j < score.length - i - 1; j++){ //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
if(score[j] < score[j + 1]){ //把小的值交换到后面
int temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
System.out.print("第" + (i + 1) + "次排序结果:");
for(int a = 0; a < score.length; a++){
System.out.print(score[a] + "\t");
}
System.out.println("");
}
System.out.print("最终排序结果:");
for(int a = 0; a < score.length; a++){
System.out.print(score[a] + "\t");
}
}
例2:
public static void main(String[] args) {
int[] arr = {2, 3, 4, 6, 5, 8, 1, 10, 8};
int length = arr.length;
while(true) {
boolean isEnd = true;
for(int i = 0; i < length - 1 ; i++) {
// 标识是否全部交换完毕
int before = arr[i];
int behind = arr[i + 1];
if(behind < before) { // 如果后面数的值<前面数的值,则交换
arr[i] = behind;
arr[i + 1] = before;
isEnd = false; // 没有交换完毕
continue;
} else if (i == length - 1) { // 如果最后一个人元素的场合下 还没有发生可以交换的事件
isEnd = true;
}
}
if(isEnd) {break;}
}
for(int n : arr) {
System.out.print(n + ", ");
}
}
}
例子:取最大最小值:
//数组中排序
int in[] = {1,6,5,8,9};
Arrays.sort(in);
for(int i=0;i<in.length;i++){
System.out.println(in[i]);
}
//数组中取最大值,最小值
int arr[] = {6,3,8,5,7,4,1};
int min2 = arr[0];
int temp = 0;
for(int i=1;i<arr.length;i++){
if(arr[i]<min2){
temp =min2;
min2 = arr[i];
arr[i] = temp;
}
}
System.out.println("最小"+min2);
//数组中取最大值,最小值
int data[]=new int[]{1,3,2,50,60,52};
int max=data[0],min=data[0];
for(int i=1;i<data.length;i++){
if(max<data[i])
max=data[i];
if(min>data[i])
min=data[i]; }
System.out.println("最大值"+max+"最小值"+min);
///JAVA冒泡排序
int[] numbs = {10,9,5,2,1,3,8,7,6,4};
int temp = 0;
for(int i = 0; i < numbs.length; i++ ){
for(int j = 0; j < numbs.length - 1; j++){
if(numbs[i] > numbs[j]){
temp = numbs[i];
numbs[i] = numbs[j];
numbs[j] = temp;
}
}
}
for(int i = 0 ; i<numbs.length; i++){
System.out.println(numbs[i]);
}
froeach:语句为<a target=_blank href="http://baike.baidu.com/view/209670.htm" target="_blank"><span style="color:#136ec2;">数组</span></a>或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。
public class Test {
public static void main(String[] args){
int[] a = {1,2,3};
for(int i : a)
System.out.print(i + ",");
<span style="white-space:pre"> </span> }
<span style="white-space:pre"> </span>}