十大排序算法Java实现

1.冒泡排序Bubble Sort

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {2,5,7,1,6,4,9};
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length - 1 - i ; j++) {
                if(arr[j]>arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            //1245679
        }
    }
}

代码解释: 外层for循环可以当成是一个计数器:控制内层for循环的次数。

每一次外圈循环完成后会将最大元素排到最后一位,这样下一次内圈循环就不必比较相对最后两位元素了,于是内圈循环次数减少相应的数值

2.选择排序Selection Sort

public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = {2,5,7,1,6,4,9};
        int minIndex,temp;
        for (int i = 0; i < arr.length-1; i++) {
            minIndex = i;
            for (int j = i+1; j < arr.length; j++) {
                if(arr[j]<arr[minIndex]){
                    minIndex = j;
                }
            }
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            //1245679
        }
    }
}

3.插入排序Insertion Sort

public class InsertionSort {
    public static void main(String[] args) {
        int[] arr = { 2, 5, 7, 1, 6, 4, 9 };
        int preIndex, current;
        for (int i = 1; i < arr.length; i++) {
            preIndex = i - 1;
            current = arr[i];
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            arr[preIndex + 1] = current;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            //1245679
        }
    }
}

4.希尔排序Shell Sort

public class ShellSort {
    public static void main(String[] args) {
        int[] arr = { 2, 5, 7, 1, 6, 4, 9 };
        int temp, j;
        int gap = 1;
        while (gap < arr.length / 3) {
            gap = gap * 3 + 1;
        }
        for (; gap > 0; gap = (int) Math.floor(gap / 3)) {
            for (int i = gap; i < arr.length; i++) {
                temp = arr[i];
                for (j = i - gap; j > 0 && arr[j] > temp; j -= gap) {
                    arr[j + gap] = arr[j];
                }
                arr[j + gap] = temp;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            // 1245679
        }
    }
}

5.归并排序Merge Sort

后边的会陆续更新

原文地址:https://www.cnblogs.com/xuyiqing/p/8545967.html

时间: 2024-10-10 19:51:24

十大排序算法Java实现的相关文章

十大排序算法 JAVA代码

冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序  O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组  冒泡排序 主要思想:外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换. 特点:stable sort(稳定性排序).In-place sort(不占用额外的空间,只是交换元素) 最优复杂度:当输入数

十大排序算法总结(Python3实现)

十大排序算法总结(Python3实现) 本文链接:https://blog.csdn.net/aiya_aiya_/article/details/79846380 目录 一.概述 二.算法简介及代码展示 1.冒泡排序 2.简单选择排序 3.简单插入排序 4.堆排序 5.快速排序 6.希尔排序 7.归并排序 8.计数排序 9.桶排序 10.基数排序 11.#代码说明 三.感悟总结 ________________________________________ 一.概述 排序算法大概是hello

十大排序算法总结

排序算法术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排序操作都在内存中完成:外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行: 时间复杂度: 一个算法执行所耗费的时间.空间复杂度: 运行完一个程序所需内存的大小. 排序算法图片总结(图片来源于网络) 图片名词解释:n: 数据规模k:"桶"的个数In-place: 占用常数内存,不占用额外内存

十大排序算法--多图预警

十大排序算法 十大排序算法 简单的排序算法 插入排序 冒泡排序 选择排序 高效的比较排序算法 希尔排序 快速排序 归并排序 堆排序 牺牲空间的线性排序算法 计数排序 桶排序 基数排序 综合分析 简单的排序算法 Θ(n^2) 插入排序 动画演示 enter description here 原理 将数组看成两部分,一部分为已排序好的数组,后面的部分为未排序数组,每次从后面的数组中取出元素与前面的有序元素一一比较,若小于则向前移动,直到找到正确的位置插入.遍历后面的数组直到整个数组排序完成. 代码

十大排序算法整理(一):概览

十大排序算法分类.特点和关系 (1)冒泡排序(交换排序的一种) (2)选择排序 (3)插入排序 (4)归并排序(采用了分治思想,额外的空间复杂度O(N),容易记错,最后合并大数组的时候需要开辟一个长度为N的数组)  https://blog.csdn.net/u010452388/article/details/81008727 (5)快速排序(采用了分治思想,交换排序的一种,额外的空间复杂度O(NlogN),容易记错) 归并排序每次递归需要用到一个辅助表,长度与待排序的表相等,虽然递归次数是O

js十大排序算法详解

十大经典算法导图  图片名词解释:n: 数据规模k:"桶"的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1  原始人冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]

九大排序算法Java实现

之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录. 1.排序算法时间复杂度.稳定性分类: 2.排序算法问题描述与实现 2.1冒泡排序(交换排序-稳定) [问题描述]对于一个int数组,请编写一个冒泡排序算法,对数组元素排序. 问题分析:冒泡排序,顾名思义,从前往后遍历,每次遍历在末尾固定一个最大值. 易错点:每次内层循环结束都会在末尾确定一个元素的位置,因此内层循环的判

js十大排序算法收藏

十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉...冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,

JS十大排序算法

十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 什么时候最快(Best Cases): 当输入的数据已经是正序时 什么时候最慢(Worst Cases): 当输入的数据是反序时 冒泡排序动图演示: 冒泡排序JavaScript代码实现: function bubbleSo