03 数组排序算法

2018-10-27  本文已影响0人  晴天卡卡

1逆序排序法

解题步骤

1.定义两个索引变量start的值为0,变量end值为数组的长度减1(即数组最后一个元素索引)
2.使用循环,完成数组索引start位置元素与end位置元素值互换
3.在循环过程中,每次循互换结束后,end值减1,start值加1
4.在循环过程中,最先判断start值是否大于end值,若大于,跳出循环
代码如下:

public static void main(String[] args) {
        for (int start=0,end=arr.length-1;end>start;start++,end--){
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
    }

2选择排序法

解题步骤

1.使用for循环(外层循环),指定数组要循环的圈数,循环的圈数为为数组长度-1
2.在每一圈中,通过for循环(内层循环)完成数组要比较的第一个元素和该元素后面的数组元素依次比较到数组的最后一个元素,把小的值放在第一个数组元素中
3.在每一圈中,第一个参与比较的元素由第几圈循环来决定:
a) 进行第一圈元素比较时,要比较的元素为数组的第一个元素,即索引为0的元素
b) 在进行第二圈元素比较时要比较的第一个元素为数组的第二个元素,即索引为1的元素
c) 得出结论:进行第n圈比较时,要比较的第一个元素为数组第n个元素,即数组索引为n-1的元素
代码如下:

  public  static void Paixu(int[] arr){
        //外层循环用来控制数组循环的圈数
        for (int i=0;i<arr.length-1;i++){
        //内层循环用来完成数组元素值比较,把小的元素值互换到要比较的第一个元素中
            for (int j=i+1;j<arr.length;j++){
                if (arr[i]>arr[j]){
                    int temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }

3冒泡排序法

解题步骤

  1. 使用for循环(外层循环),指定数组要循环的圈数(通过图解可知,数组循环的圈数为数组长度-1)
  2. 在每一圈中,通过for循环(内层循环)完成相邻的元素值依次比较,把大的值放后面的元素中
    3.每圈内层循环的次数,由第几圈循环来决定。
    a) 进行第一圈元素比较时,内层循环次数为数组长度-1
    b) 进行第二圈元素比较时,内层循环次数为数组长度 -2
    c) 依次类推,得出结论:进行第n圈元素比较时,内层循环次数为数组长度-n
    代码如下:
 public static void Maopao(int[] arr){
        for (int i=0;i<arr.length-1;i++){
            for (int j=0;j<arr.length-1-i;j++){
                if (arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读