一、本章小结 1.根据时间复杂度的不同,常见的算法可以分为3大类。 1).O(n²) 的排序算法 冒泡排序 简单选择排序 插入排序:直接插入,折半插入 2).O(n log n) 的排序算法 希尔排序 归并排序 快速排序 堆排序 2.根据是否受到待排序对象初始排列影响,可分为 1)受到待排序对象的初 ...
分类:
其他好文 时间:
2020-07-12 14:30:19
阅读次数:
62
排序的概念 排序的方式: 1、插入排序: 直接插入排序: 一 一比对 折半插入排序:在已经拍好的序列中插入,适合初始记录无序、n较大的情况 希尔排序:待排序的关键字基本有序->效率较高 分组插入,先分割(相隔某个增量的记录),对每组进行直接插入排序(不能用于链式结构) 2、交换排序: 冒泡排序:左右 ...
分类:
其他好文 时间:
2020-07-12 12:36:00
阅读次数:
55
冒泡排序(Bubble Sort):是一种直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法步骤: 1, ...
分类:
编程语言 时间:
2020-07-12 12:27:34
阅读次数:
118
选择排序 是一种简单直观的排序算法,它也是一种交换排序算法,和冒泡排序有一定的相似度,可以认为选择排序是冒泡排序的一种改进。 表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。 原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起 ...
分类:
编程语言 时间:
2020-07-11 22:56:06
阅读次数:
65
第三章 这些算法很有用 3.3 查找 1.顺序查找 从第一个开始逐个比较,知道找出与给定关键字相同的数为止。 2.二分查找 二分查找是一种效率较高的方法。 *二分查找一定要在排序后进行 *通过不断找中点进行判断待找的数字在左边还是右边 3.4 Java工具类中算法的实现 对于前面的一些算法,Java ...
分类:
编程语言 时间:
2020-07-11 19:33:12
阅读次数:
68
数据结构第八章小结 一、知识点 1、基本概念 排序:按关键字非递增或非递减顺序对一组记录重新排序的操作。 (1)内部排序与外部排序。内部排序:整个排序过程不需要访问外存便能完成外部排序:参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,需要借助外存 (2)排序稳定性 稳定:冒泡排序、插入 ...
分类:
其他好文 时间:
2020-07-11 18:57:28
阅读次数:
45
第三章 这些算法很有用 3.1 比较值 1.最大值 *两个数的比较 *for循环遍历 *两两比较 *分为两部分比较 2.最小值 最小值的算法与最大值类似 *for循环遍历 两两比较 分成两部分 3.平均值 3.2 数字排序 1.冒泡排序 2.选择排序 3.选择排序 今天就先到这里吧,后面的快速排序实 ...
分类:
编程语言 时间:
2020-07-10 13:27:53
阅读次数:
57
前言 将下面按照从小到大排序: int[] arr = { 4, 6, 8, 5, 9 }; 这时候可以通过冒泡排序,计数排序等。 但是一但数据arr很大,那么会产生排序过于缓慢,堆排序就是一个很好的解决方案。 树的堆,有最大堆和最小堆。 看下最大堆: 它是这样子的,就是说一个节点的大小一定大于它的 ...
分类:
编程语言 时间:
2020-07-10 11:22:48
阅读次数:
72
一. 今天学习了一些算法; 求最小值,最大值,平均值 接着学了几种排序方法 1.冒泡排序 (1)逐一比较数组中响铃的两个元素,如果后面的数字小于前面的数字,就交换先后元素; (2)经过一个轮次的比较,一定有一个最大的排在最后的位置; (3)每次比较省下的元素,经过n-1次比较 2.选择排序 (1)将 ...
分类:
编程语言 时间:
2020-07-10 00:06:28
阅读次数:
56
var arr=[12,83,27,65,45,32,27,11,4]; var k; for(i=0;i<arr.length-1;i++){ for(j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ k=arr[j]; arr[j]=arr[j+1] ...
分类:
编程语言 时间:
2020-07-08 20:00:42
阅读次数:
71