LongJL 发表于 2021-7-10 15:34

【自学笔记】 Java基础 - 数组的常用排序算法

本帖最后由 LongJL 于 2021-7-10 15:39 编辑

# 数组之排序
数组的排序很多,这么将记录俩种最常见的。
- 冒泡排序
- 直接选择排序

## 冒泡排序
### 思想
冒泡算法的思想是,比较俩个相邻的元素,如果满足条件就交换位置。如:比较小的元素移到前面,大的元素就移到后面。这样经给n次的比较之后,小的值慢慢的从后往前移,就像气泡一样从底部浮到了顶部。
### 实现步骤解析
结构介绍:冒泡算法的主体是需要双层循环去实现的,第一层是控制循环轮数,轮数=数组长度-1,第二次循环主要是对比每个相邻的元素,通过判断是否需要交换位置。
过程解析:第一轮外循环走完时,这是已经把最大值移动到了最后,那么最后一个值在之后的轮数将不会在参与对比,依次类推每次把最大值往后移,最小值往前移。
### 示例图


### 代码
```Java
public class Bubble {
    public static void main(String[] args) {
      int[] array = {10,33,27,89,20,50,80};
      for (int i = 1;i<array.length;i++){
            for (int j = 0;j<array.length-i;j++){
                if (array>array){
                  int temp = array;
                  array = array;
                  array = temp;
                }
            }
      }

      for (int i = 0; i < array.length; i++) {
            System.out.print(array);
            System.out.print(" ");
      }
      // result=> 10 20 27 33 50 80 89
    }
}
```

## 直接选择排序
### 思想
将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素。如:从数组中找出最大的元素,那么拿着数组的第一个元素与其他元素进行比较如果遇到比第一个元素大的那么放弃第一个元素,拿着这个比较大的元素继续与其他元素进行比较,直到找到最大的元素。记下下标,与指定的排序位置交换。
### 实现步骤解析
结构介绍:直接选择排序算法的主体是需要双层循环去实现的,第一层是控制当前符合要求的值存放的位置,第二层主要是为了对比哪个元素符合要求。
过程解析:第一轮外循环走完时,那么最大值已经与指定的排序位置交换(一般结尾开始排序),那么最后一个值在之后的轮数将不会在参与对比,经给数次的位置交换。就完成了排序。

### 示例图


### 代码
```Java
public class Select {
    public static void main(String[] args) {
      int[] array = {10,33,27,89,20,50,80};

      for (int i=1;i<array.length;i++){
            int index = 0;
            for (int j = 1;j<=array.length-i;j++){
                if (array>array){
                  index = j;
                }
            }
            int temp = array;
            array = array;
            array = temp;
      }

      for (int i = 0; i < array.length; i++) {
            System.out.print(array);
            System.out.print(" ");
      }
    }
}
```
页: [1]
查看完整版本: 【自学笔记】 Java基础 - 数组的常用排序算法