java数组排序方法:冒泡排序法与插入排序法。
冒泡排序法:
具体步骤:
冒泡排序法的第三次排序与第一次原理一致,只不过第三次次排序不再关系数组倒数第二个位置元素,因为经过前一次排序后,数组倒数第二个位置元素已经存储了数组中数值第二大的元素,所以第三次排序的目的是将数组中数值第三大的元素存储到数组的倒数第三个位置(即此时只关心数组前四个元素 {3, 21, 16}的顺序)。
第一次循环:将元素3与元素21进行比较,由于3 < 21,所以不用交换元素;
第二次循环:将元素21与元素16进行比较,由于21 > 16,所以需要交换元素(即21和16位置互换,数组的前三位序列被调整为 {3, 16, 21});
第三次循环:将元素21与元素99进行比较,由于12 < 99,所以不需要交换元素;
第四次循环:将元素99与元素1024进行比较,由于99< 1024,所以不用交换元素。
public class Maopaopaixu {
public static void main(String[] args) {
int[] num=new int[] {21,99,3,1024,16};
int min;
for(int i=0;i<=num.length-1;i++) {
for(int j=i+1;j<=num.length-1;j++) {
if(num[i]>num[j]) {
min=num[j];
num[j]=num[i];
num[i]=min;
}
}
}
//for(int k=0;k<=num.length-1;k++) {
//System.out.println(num[k]);
for(int Num:num) {
System.out.println(Num);
}
}
}
插入排序:
每循环一次都将一个待排序的元素所对应的数据按其顺序大小插入到前面已经排序的序列的合适位置,直到全部插入排序完为止,其难点在于如何在前面已经排好序的序列中找到合适的插入位置。该排序方法有很多,比如直接插入排序、二分插入排序、希尔排序等等。
先看如何解决这个问题:已知数组{1, 2, 4, 5, 3},将3插入到适当位置,使之成为一个升序排列的数组,即{1, 2, 3, 4, 5}。
插入排序的实质:将数组分为有序区和无序区,定义一个标记无序区第一个元素的定位变量,将该元素与前面的有序区内元素遍历比较,找到该元素应该插入位置,然后将应插入位置到待插入元素所在位置之间的元素后移一位,最后再将待插入元素插入到应插入的位置,有序区扩增一位,无序区减少一位,定位变量再次后移,锁定后面无序区第一位元素位置。
public class Charupaixu {
public static void main(String[] ags){
int[] array={2,6,4,7,3,-1};
way(array);
for (int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
public static void way(int[] array){
for (int i=1;i<array.length;i++){
int position=array[i];
int j=i-1;
while (j>=0&&position<array[j]){
array[j+1]=array[j];
j--;
}
array[j+1]=position;
}
}
}