
排序
醉小义
学习算法让自己有更大的提升
展开
-
桶排序算法
// 桶排序const bucketSort = (array, bucketSize) => { if (array.length === 0) { return array; } console.time('桶排序耗时'); let i = 0; let minValue = array[0]; let maxValue = array[0]; for (i = 1; i < array.length; i++...原创 2021-12-05 20:58:02 · 514 阅读 · 0 评论 -
选择排序—简单选择排序(Simple Selection Sort)
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。简单选择排序的示例:操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个转载 2016-05-23 22:44:26 · 478 阅读 · 0 评论 -
插入排序—希尔排序(Shell Sort)
希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。操作方法:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟转载 2016-05-21 23:07:25 · 482 阅读 · 0 评论 -
选择排序—堆排序(Heap Sort)
堆排序是一种树形选择排序,是对直接选择排序的有效改进。基本思想:堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最转载 2016-05-25 22:47:20 · 666 阅读 · 0 评论 -
1.插入排序—直接插入排序(Straight Insertion Sort)
基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素原创 2016-03-21 15:29:38 · 666 阅读 · 2 评论 -
排序的分类
原创 2015-10-17 22:54:22 · 353 阅读 · 0 评论 -
快速排序
快速排序使用分治策略来把待排序数据序列分为两个子序列,具体步骤为:(1)从数列中挑出一个元素,称该元素为“基准”。 (2)扫描一遍数列,将所有比“基准”小的元素排在基准前面,所有比“基准”大的元素排在基准后面。 (3)通过递归,将各子序列划分为更小的序列,直到把小于基准值元素的子数列和大于基准值元素的子数列排序。# include <iostream>using namespace std;v原创 2015-10-18 12:45:09 · 519 阅读 · 0 评论 -
简单选择排序
选择排序(Selection Sort)的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,……不断重复这个过程,直到只剩一个记录为止。# include <iostream>using namespace std;//升序 void SimpleSort(int *a,int n);int main(){ int a[]={原创 2015-10-18 13:02:26 · 394 阅读 · 0 评论 -
冒泡排序法
冒泡排序法的基本思想是: 对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。# include <iostream>using namespace std;void Sort(int a[],int n){原创 2015-10-18 10:36:35 · 593 阅读 · 0 评论 -
生成不同随机数
# include <cstdio> # include <cstdlib># include <iostream># include <ctime>using namespace std; /* 生成n个不同的数 min代表最小值 max生成的最大值 */ int CreateData(int arr[],int n,int min,int max) //创建原创 2015-10-18 09:59:27 · 668 阅读 · 0 评论