欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单的数组排序方法

程序员文章站 2022-06-25 09:17:08
数组排序: 升序简单的几种排序方法:1.选择排序: 每一轮都选择一个最大的, 放在最后面2.冒泡排序: 每一轮比较相邻两个元素, 小的放前面, 大的放后面3.插入排序: 将数组分成两部分, 一部分是已经排好的, 另一部分挨个访问, 插入到前一部分合适的地方题目:将arr:8,2,3,7,1进行从小到大排序选择排序: arr: 8 , 2 , 3 , 7 , 1第一轮:默认index=01: 如果 arr[1] > arr[index], index就替换掉, index=02: 如...

数组排序: 升序

简单的几种排序方法:
1.选择排序: 每一轮都选择一个最大的, 放在最后面
2.冒泡排序: 每一轮比较相邻两个元素, 小的放前面, 大的放后面
3.插入排序: 将数组分成两部分, 一部分是已经排好的, 另一部分挨个访问, 插入到前一部分合适的地方

题目:将arr:8,2,3,7,1进行从小到大排序
选择排序: arr: 8 , 2 , 3 , 7 , 1
第一轮:
默认index=0
1: 如果 arr[1] > arr[index], index就替换掉, index=0
2: 如果 arr[2] > arr[index], index就替换掉, index=0
3: 如果 arr[3] > arr[index], index就替换掉, index=0
4: 如果 arr[4] > arr[index], index就替换掉, index=0
交换 index位置 和 当前最后一个位置 length-1
1 , 2 , 3 , 7 , 8
i:0
j:1~5
第二轮:
1: arr[0] 比较 arr[1], 记录index=0
2: 如果 arr[2] > arr[index], index就替换掉, index=2
3: 如果 arr[3] > arr[index], index就替换掉, index=3
交换 index位置 和 当前最后一个位置 length-1-1
1 , 2 , 3 , 7 , 8
i:1
j:1~4
第三轮:
1: arr[0] 比较 arr[1], 记录index=0
2: 如果 arr[2] > arr[index], index就替换掉, index=2
交换 index位置 和 当前最后一个位置 length-1-2
1 , 2 , 3 , 7 , 8
i:2
j:1~3
第四轮:
1: arr[0] 比较 arr[1], 记录index=0
交换 index位置 和 当前最后一个位置 length-1-3
1 , 2 , 3 , 7 , 8
i:3
j:2
i: i=0; i < length-1;i++
j: j=1; j < length-i;j++

代码如下
public static void main(String[] args) {
    int[] arr = new int[]{8, 2, 3, 7, 1};
    for (int i=0;i<arr.length-1;i++){
        int index = 0;
        for(int j=1;j<arr.length-i;j++){
            if(arr[j]>arr[index]){
                index = j;
            }
        }
        int temp = arr[index];
        arr[index] = arr[arr.length-1-i];
        arr[arr.length-1-i] = temp;
    }
    System.out.println(Arrays.toString(arr));
}

冒泡排序分析: arr: 8 , 2 , 3 , 7 , 1;
第一轮: i=0
2, 8, 3, 7, 1 j=0 arr[j] > arr[j+1]->交换
2, 3, 8, 7, 1 j=1
2, 3, 7, 8, 1 j=2
2, 3, 7, 1, 8 j=3
第二轮: i=1
2, 3, 7, 1, 8 j=0
2, 3, 7, 1, 8 j=1
2, 3, 1, 7, 8 j=2
第三轮: i=2
2, 3, 1, 7, 8 j=0
2, 1, 3, 7, 8 j=1
第四轮: i=3
1, 2, 3, 7, 8 j=0
i: i=0; i < length-1;i++
j: j=0; j < length-1-i;j++

代码如下:

public static void main(String[] args) {
        int[] arr = new int[]{8, 2, 3, 7, 1};
        for (int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    int temp =arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }

本文地址:https://blog.csdn.net/weixin_49195015/article/details/107282057