废话不多说了,直接上题:
public class bubbleSort_Test {
public static void main(String[] args) {
int [] arr = {98,54,22,15,36,99,45};//定义一个字符数组
/*demo1(arr);
demo2(arr);*/
bubbleSort2(arr);
demo2(arr);
}
/*
* 冒泡排序
* 1,返回值类型,void
* 2,参数列表,int[] arr
*
* 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次
第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次
第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次
第四次:arr[0]与arr[1]比较1次
*/
private static void demo1(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {//外层循环.
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]) {
/*int temp = arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;*/
//重复代码提出去
change(arr,j,j+1);
}
}
}
}
//change 方法 只对 数组中某两个 元素进行调换.
private static void change(int []arr , int i ,int j ) {
int temp = arr[j];
arr[j]= arr;
arr = temp;
}
private static void demo2(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr+" ");
}
}
//-------------------------------------------------------
/*
* 选择排序
* 1,返回值类型void
* 2,参数列表int[] arr
*
* 第一次:arr[0]分别与arr[1-4]比较,比较4次
第二次:arr[1]分别与arr[2-4]比较,比较3次
第三次:arr[2]分别与arr[3-4]比较,比较2次
第四次:arr[3]与arr[4]比较,比较1次
*/
public static void bubbleSort2(int []arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = i; j < arr.length; j++) {
if (arr>arr[j]) {
change(arr,i,j);
}
}
}
}
}
重点: 两种方法可以完成 对字符数组中的元素进行排序.
第一种是 冒泡,注意For循环中的 关系,千万不能弄混.
第二种是 选择 排序, 和 冒泡排序差不太多,主要是细节问题,
自己总结了一下, 基本上来说, 两者的关系很相像,都是从小到大的排序,
只不过. 就是一个是先把小的拿出来,一个是吧大的拿出来. 很不一样
最后再说两句:
爱生活爱JAVA
|
|