这几天再看排序,有提到排序稳定性的问题。排序分为稳定(冒泡排序、插入排序、归并排序、基数排序)和不稳定(选择排序、快速排序、希尔排序、堆排序)。 看见过一个面试题问过排序算法稳定性的应用,当时不怎么理解,现在整理出来一些思绪。 给出一组数据(比如学生信息),每个数据都有不同的属性(成绩A,成绩B,等 ...
分类:
编程语言 时间:
2018-10-15 23:26:11
阅读次数:
370
概述 在N个乱序数字中查找第K大的数字,时间复杂度可以减小至O(N). 可能存在的限制条件: 要求时间和空间消耗最小、海亮数据、待排序的数据可能是浮点型等。 方法 方法一 对所有元素进行排序,之后取出前K个元素,时间复杂度高,不提倡。 思路:使用快排,选择排序,堆排序。 时间复杂度:O(n\ log ...
分类:
其他好文 时间:
2018-10-15 14:41:21
阅读次数:
183
2018 2019 20172329 《Java软件结构与数据结构》第五周学习总结 教材学习内容总结 《Java软件结构与数据结构》第九章 排序与查找 一、查找 1、查找概念简述: (1)查找3是这样一个过程,即在某个项目组中寻找某一指定目标元素,或者确定该组中并不存在该目标元素。对其进行查找的项目 ...
分类:
编程语言 时间:
2018-10-14 21:58:00
阅读次数:
189
排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交换数组元素的函数,供排序时调用 简单选择排序 简单选择排序是 ...
分类:
编程语言 时间:
2018-10-12 13:44:14
阅读次数:
203
选择排序,在于每一次都将一个数筛选出来,存在另一个数组中。 ...
分类:
编程语言 时间:
2018-10-10 20:11:03
阅读次数:
199
1 /** 2 * 1.数组sort()排序 3 * 2.直接选择排序(两重for循环排序) 4 */ 5 import java.lang.*; 6 import java.lang.reflect.Array; 7 import java.util.*; 8 import static java... ...
分类:
编程语言 时间:
2018-10-09 16:59:32
阅读次数:
122
基本思路: (1)、首先假设一组数组a[n]中的第一个元素是最小的,标注最小元素下标为min=0; (2)、将a[0]元素与后面的n-1个元素从第二个开始比较,如果找到下标为j的 元素a[j],满足a[0]>a[j],则进行 将a[0]与a[j]交换 (3)、重新从第一个元素开始,一次跟后面的元素进 ...
分类:
编程语言 时间:
2018-10-09 00:33:50
阅读次数:
168
Java的经典排序 选择排序 冒泡排序 折半查找 选择排序 | 选择排序 | 3 | 2 | 1 | 5 | 8 | | : : | : : | : : | | | | | 0 | 1 | 3 | 2 | 5 | 8 | | 1 | 1 | 2 | 3 | 5 | 8 | | 2 | 1 | 2 | ...
分类:
编程语言 时间:
2018-10-07 22:06:28
阅读次数:
218
排序这里讲解这些 一、选择排序 选择排序,其实就是把第一个元素和后面的一个一个进行比较,把最大或者最小的移动到前面,类似于下图,我简单了画了一下。 接下来,代码如下: 重点就在于SelectSort这个方法,我写的默认是从小到大进行排序。输出结果如下: 选择排序,就是这样了。 二、冒泡排序 ...
分类:
编程语言 时间:
2018-10-07 15:36:11
阅读次数:
120
常见的基础排序有选择排序、冒泡排序和插入排序。众所周知,他们的时间复杂度是 O(n\*n)。 但是,现在要重新认识一下基础排序算法,尤其是“插入排序”:在近乎有序的情况下,插入排序的时间复杂度可以降低到 O(n)的程度。 因此,在处理系 ...
分类:
编程语言 时间:
2018-10-07 13:49:12
阅读次数:
148