目的:掌握 排序算法的分类及不同算法复杂度的对比、搞清楚 XXX与数组初始状态无关分为几种情况: a、算法复杂度与初始状态无关; b、元素总比较次数与初始状态无关; c、元素总移动次数与初始状态无关。 1、算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次 ...
分类:
编程语言 时间:
2018-09-02 13:58:29
阅读次数:
162
目的:掌握 基数排序 的 基本思想与过程、代码实现、时间复杂度 1、基本思想与过程:(只针对数字) (1)首先确定基数为10,数组的长度也就是10.每个数都会在这10个数中寻找自己的位置。 (2)不同于BinSort会直接将数放在数组的下标处,如将 [34] 放在下标为34的位置,即a[34] = ...
分类:
编程语言 时间:
2018-09-02 12:56:46
阅读次数:
174
目的:掌握 快速排序 的 基本思想与过程、代码实现、时间复杂度 1、基本思想与过程:(分治思想,挖坑填数) (1)从数列中选择一个数作为key值; (2)将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边; (3)对左右两个小数列重复第二步,直至各区间只有1个数。 下面对数组【42, ...
分类:
编程语言 时间:
2018-08-30 14:58:46
阅读次数:
156
转发请注明出处:https://www.cnblogs.com/fnlingnzb-learner/p/9374732.html 一、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为 ...
分类:
编程语言 时间:
2018-07-26 23:41:00
阅读次数:
183
总结一下学习的复杂度为O(n^2)的三种排序算法:选择排序,插入排序,希尔排序。 (1)选择排序:从第一个位置开始每次查找剩下的位置中最小的数值放入当前位置; (2)插入排序:从第二个位置开始,每次都将当前位置的数值插入前面合适的位置,对于几乎有序的数列来说,插入排序能带来更高的效率; (3)希尔排 ...
分类:
编程语言 时间:
2018-07-12 19:53:29
阅读次数:
159
1.插入排序和归并排序是稳定的,选择排序,希尔排序,快速排序,堆排序都是不稳定的。 2. 3.快速排序是最快的通用排序算法。 4.如果稳定性很重要而空间又不是问题,归并排序可能是最好的。 ...
分类:
编程语言 时间:
2018-06-28 17:36:12
阅读次数:
106
package com.company;import java.util.Arrays;import java.util.Scanner;public class ArraysDemo { public static void main(String[] args) { }} class Bubbl ...
分类:
编程语言 时间:
2018-06-23 14:33:38
阅读次数:
213
数据结构中的排序算法 当待排序序列基本有序时优先选择简单排序,快速排序平均次数少于堆排序 1 插入排序 1) 直接插入排序 第一次将位置0和位置1进行比较,小的放前。 第二次将位置2上的数字,插入到位置0和位置1中。 … 第k次将位置k上的数字,插入到第k-1次已经完成的序列中。 5 2 6 0 3 ...
分类:
编程语言 时间:
2018-06-16 23:35:48
阅读次数:
257
注:本文所指归并排序指 二路归并排序。 归并排序是平均情况、最坏情况、最好情况时间复杂度都为O(Nlog2N)的稳定的排序算法。最近梳理了下归并排序的递归、非递归、以及自然归并排序算法。 归并排序的基础:将两个有序数组合并为一个有序数组,需要O(n)的辅助空间。 图片来自:https://www.c ...
分类:
编程语言 时间:
2018-05-29 01:48:27
阅读次数:
218
常见排序算法总结与实现 本文使用Java实现这几种排序。以下是对排序算法总体的介绍。 冒泡排序 时间复杂度:O(n^2),最优时间复杂度:O(n),平均时间复杂度:O(n^2) 插入排序 时间复杂度:O(n^2),最优时间复杂度:O(n),平均时间复杂度:O(n^2) 下面展示了三种插入排序的实现, ...
分类:
编程语言 时间:
2018-05-18 18:12:35
阅读次数:
166