本帖最后由 n361204357 于 2015-7-25 00:11 编辑
import java.util.*;
class i1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,4,2,8,9,7};
//排序前
daYin(arr);
//排序
maoPao(arr);
//xuanZe(arr);
//Arrays.sort(arr);//内置的排序方法,需要导包。
//排序后
daYin(arr);
}
public static void maoPao(int[] arr) //冒泡排序:相邻的两个数比较。
{
for(int x=0;x<arr.length-1;x++)
{
//因为第一圈结束后,最值已经出现在最后位,所以-1,避免角标越界。
//为什么会越界,因为y为最后一个数时,y+1就超出了角标
//-x是因为每轮减少了一次比较。
for(int y=0;y<arr.length-x-1;y++)//跟选择排序不同的是,初始值是0,每轮都要从0角标开始比较。
{
//相邻的两个数比较
if(arr[y+1]>arr[y])//第一圈结束后,最值出现在最后位
{
/*
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
*/
zhiHuan(arr,y,y+1);
}
}
}
}
/*
public static void xuanZe(int[] arr)//选择排序,原理和打印三角形类似,上尖改条,下尖改初,选择尖朝下
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]<arr[y])//第一圈后最值出现在头角标的位置上
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
*/
public static void daYin(int[] arr) //定义一个数组排序显示的方法
{
System.out.print("(");
//遍历数组,用到for循环,把数组元素一个一个打印出来
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)//如果是最有一个数,那么最后一个数不要加','。
{
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]);
}
System.out.println(")");
}
public static void zhiHuan(int[] arr,int b,int c)
//无论是哪个排序方法都需要用到置换方法,定义一个方法,方便置换。
{
int a=arr;
arr=arr[c];
arr[c]=a;
}
} |
|