思路:从数组角标0开始分别往后比较,如果比后面大就交换位置,申明一个变量来实现交换
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------
使用双重循环,外层循环次数,内层往后比较循环
public class ArrayDemo_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{4,2,9,3,6,1};
//排序前
System.out.print("排序前:");
AryPrint(arr);
//排序
//sort(arr); //选择排序
buberl(arr); //冒泡排序
//排序后
System.out.print("排序后:");
AryPrint(arr);
}
/**
* 冒泡排序,每相邻两个元素进行比较,第一次循环比较最大数出来
* 所以最后一个元素在第二次不参与循环,因此后面没循环一次,最后一个
* 元素都不参加循环
*
*/
public static void buberl(int[] ary){
int temp =ary[0];
for (int i = 0; i < ary.length; i++) {
for (int j = 0; j < ary.length-i-1; j++) {
if (ary[j]>ary[j+1]) {
temp = ary[j];
ary[j]=ary[j+1];
ary[j+1]=temp;
}
}
}
}
/**
* 选择排序
* 升序排列
* 排序后不需要返回数组,因为sort方法里面的数据和你原数组引用的是同一个地址
* 所以改变ary排序即改变原数据
* @param ary
*/
public static void sort(int[] ary){
for (int i = 0; i < ary.length; i++) {
for (int j = i+1; j < ary.length; j++) {
if (ary[i]>ary[j]) {
int temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
}
}
public static void AryPrint(int[] aryPrt){
for (int i = 0; i < aryPrt.length; i++) {
if (i==0) {
System.out.print("[");
}
if (i!=aryPrt.length-1) {
System.out.print(aryPrt[i]+",");
}else {
System.out.print(aryPrt[i]+"]\n");
}
}
}
}
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------