首页 > 编程语言 > 详细

Java基础4-算法

时间:2021-01-06 09:12:34      阅读:27      评论:0      收藏:0      [点我收藏+]

基本排序算法

三大排序

  • 冒泡排序:对比相邻元素值,满足条件就交换
    算法实现:双循环,外层循环控制排序轮数,为length-1;内存循环比较相邻元素,满足条件则交换,循环轮数即对比次数随排序轮数减少。
  • 直接选择排序:每轮从待排序数列中选择最小(或最大)元素放到最后。相比冒泡排序不需要大量交换,故速度更快。
    算法实现:将数组中的每个元素与第一个元素比较,如果这个元素小于第一个元素则交换这两个元素。时间复杂度:n(n-1)/2。*
  • 插入排序:将待排序数列中每轮选择的元素依次与已排序元素比较,找到合适位置插入。
    算法实现:双循环,外循环从第二个元素开始到最后,内循环从外循环中选择的元素倒数到0。寄存外循环中选择的元素,依次与已排序列表中元素对比,在此过程中找到合适位置。将寄存在待排序数列中选择合适的位置插入。
    public void buppleSort(int[] array) {
        int len = array.length;
        if (len <= 1) {
            return;
        }
        for (int i = 0; i < len; i++) {
            boolean swapped = false;

            for (int j = i + 1; j < len; j++) {
                if (array[i] > array[j]) {
//                  交换
                    int t = array[i];
                    array[i] = array[j];
                    array[j] = t;
                    swapped = true;
                }
                // 如果没有发生交换,则排序完成;如果发生交换,则排序继续
            }
            if (!swapped) {
                break;
            }
        }
    }
    public int[] insertSort(int[] array) {
        int len = array.length;
        if (len <= 1) {
            return array;
        }
        for (int i = 1; i < len; i++) {
            int temp = array[i];
            int j = i - 1;
            for (; j >= 0; j--) {
                if (array[j] > temp) {
                    array[j + 1] = array[j];
                } else {
                    break;// 找到插入位置
                }
            }
            array[j + 1] = temp;//插入
        }
        return array;
    }

Java基础4-算法

原文:https://www.cnblogs.com/tanjr/p/14238722.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!