在之前的描述中,我们知道如何得到数组中的最大值,那么今天我们一起了解数组中的排序!
升序
冒泡排序,就是每次比较相邻两数 小的交换到前面 每轮结束后最大的数交换到最后,针对所有元素,重复以上步骤。用图片描述如下:
冒泡排序的优点就在于每进行一组排序,就会少比较一次,因为每进行一组排序都会找出一个相对前一个数较大值。如上例:第一组比较之后,排在最后的一个数一定是最大的一个数,第二组排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数;第三组比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,每进行一组比较,都会少比较一次。,代码如下:
package paixu;
public class dome {
public static void main(String[] args) {
//冒泡排序算法
int[] a=new int[]{46,2,4,5,15,19,26,3,27,50,38,44,47,48,36};
//需进行length-1次冒泡
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-1-i;j++)
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("从小到大排序后的结果是:");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+",");
}
}
结果是:
在数组中插入数据,并降序输出!
上面我们说完了冒泡排序,接下来我们一起通过代码的方式研究一下在原有的数组中插入新的数值,并通过降序的方式排列!
在原有的数组[99,85,5,82,4,63,20,60]中插入数值33:
package array;
import java.util.Arrays;
//插入数值,并降序排列
public class Demo_1 {
public static void main(String[] args) {
int[] a={99,85,5,82,4,63,20,60};
int[] b=new int[a.length+1];//数组扩容
for(int i=0;i<a.length;i++) {
b[i]=a[i];
}
System.out.println("扩容后的数组是:");
System.out.println(Arrays.toString(b));
int num=33;//插入数值33
for(int i=b.length-2;i>=0;i--) {
//跟前一个比较,不满足降序时,进行交换
if(num>b[i]) {
b[i+1]=b[i];//元素后移
}else {
//如果满足顺序时,就找到插入位置
b[i+1]=num;//遇到大的比不过,那么在后一个位置插入
break;
}
//如果没有插入,就插入在首位,说明这个数最大
if(i==0) {
b[0]=num;
}
}
System.out.println("将数值插入数组后得到:");
System.out.println(Arrays.toString(b));
for(int i=b.length-1;i>0;i--) {
for(int j=b.length-1;j>0;j--) {
if(b[j]>b[j-1]) {
int temp=b[j];
b[j]=b[j-1];
b[j-1]=temp;
}
}
}
System.out.println("插入数值从大到小的排列是:");
System.out.println(Arrays.toString(b));
}
}
这就是简单的升序降序排列方法~如有不足还望多多指教!
一个爱骑机车的码农敬上!!!