Java数据结构与算法之冒泡排序、选择排序

2021-04-24 13:28

阅读:534

标签:class   冒泡排序   ==   flag   实现   static   更新   mic   说明   

冒泡排序

4.1 基本介绍

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。

4.2 基本实现

技术图片

冒泡排序规则

  • 一共进行数组的大小-1次大的循环
  • 每一趟排序的次数在逐渐的减少
  • 如果我们发现在某趟排序中,没有发生一次交换,可以提前结束冒泡排序。

4.3 代码实现

public class Sort {

    public static void main(String[] args) {
    	// 构建测试数组
        int[] array = {7,8,4,1,5};
        int[] arr = bubbleSort(array);
        System.out.println("------------------");  
        System.out.println(Arrays.toString(arr));
    }

	// 算法的具体实现
    public static int[] bubbleSort(int[] arr) {
        boolean flag = false; // 用于判断是否发生数字交换
        for (int i = 0; i  arr[j+1]) {
                    flag = true;
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            System.out.println(Arrays.toString(arr));
            if (flag) { // 发生交换,则继续循环
                flag = false;
            }else { // 未发生交换,跳出循环
                break;
            }
        }
        return arr;
    }
}

选择排序

5.1 选择排序思想

技术图片

5.2 代码实现

public static int[] selectSort(int[] nums) {
        int minIndex = 0;
        int min = 0;
        for (int i = 0; i  nums[j]) {
                    min = nums[j];
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                nums[minIndex] = nums[i];
                nums[i] = min;
            }
        }
        return nums;
    }

插入排序

6.1 插入排序思路

技术图片

6.2 代码实现

public static int[] insertSort(int[] nums) {
        int insertNum = 0;
        int insertIndex = 0;
        for (int i = 1; i = 0 && insertNum 

Java数据结构与算法之冒泡排序、选择排序

标签:class   冒泡排序   ==   flag   实现   static   更新   mic   说明   

原文地址:https://www.cnblogs.com/njuptzheng/p/13264074.html


评论


亲,登录后才可以留言!