java基础案例:数组的排序

import java.util.Arrays;


public class Array_Demo8
{
public static void main(String[] args){
int [] arra = new int[]{3,5,6,2,7,1,9};
int max = getmax(arra);
System.out.println("max="+max);

int [] arra2 = new int []{6,4,76,2,42,12,31,9,1};
getselect(arra2);

getbubble(arra2);

selectsort(arra2);

//java中内置的排序函数;
Arrays.sort(arra);
for(int x=0;x<arra.length;x++)
{
System.out.println(arra[x]);
}

}

//求数组中的最大值;
public static int getmax(int [] arra)
{
int max = arra[0]; 
for(int x=1;x<arra.length;x++)
{
if(arra[x]>max)
{
max= arra[x];
}
}
return max;

}


//选择排序法;

public static void getselect(int[] arra2)
{
for(int x=0;x<arra2.length-1;x++)
{
for(int y=x+1;y<arra2.length;y++)
{
if(arra2[x]>arra2[y])
{
int temp = arra2[x];
arra2[x] = arra2[y];
arra2[y] = temp;
}
}
}
for(int x=0;x<arra2.length;x++)
{
System.out.println(arra2[x]);
}
}

/*
这个排序是将数组中的前一个数和后一个数相比较,比较完满足条件就
记录住角标和角标元素,等内循环完了之后才换位,这样就减少了换位
次数,节约了每次比较就换位的时间,整个程序运行时间就减少了
*/
public static void selectsort(int[] arra2)
{
for(int x=0;x<arra2.length-1;x++)
{
int number = arra2[x];
int index = x;
for(int y=x+1;y<arra2.length;y++)
{
if(number>arra2[y])
{
number = arra2[y];
index = y;
}
}
if(index!=x)
{
swap(arra2,x,index);
}
}
}


//冒泡排序法;
/*内循环:
-1:是为了避免角标越界;
-x:是为了让外循环增加一次,内循环参数与比较的元素个数递减;
*/
public static void getbubble(int[] arra2)
{
for(int x=0;x<arra2.length;x++)
{
for(int y=0;y<arra2.length-1-x;y++)
{
if(arra2[y]<arra2[y+1])
{
/*
int temp = arra2[y];
arra2[y] = arra2[y+1];
arra2[y+1] = temp;
*/
swap(arra2,y,y+1);
}
}
}
for(int x=0;x<arra2.length;x++)
{
System.out.println(arra2[x]);
}
}


//把换位的代码定义成函数
public static void swap(int [] arra2,int a,int b)
{
int temp = arra2[a];
arra2[a] = arra2[b];
arra2[b] = temp;
}
}

猜你喜欢

转载自blog.csdn.net/z1888202/article/details/79371488
今日推荐