算法
_大猪
这个作者很懒,什么都没留下…
展开
-
二维数组中查找相邻的相同数据对象
MergeCtrl.ts:import { CellCtrl } from './CellCtrl';export class MergeCtrl { cellArr: CellCtrl[][] = []; constructor() { //初始化测试数据 this.cellArr[0] = []; let cellCtrl = new CellCtrl(); cellCtrl.setElementId("2")原创 2021-10-20 18:45:59 · 1348 阅读 · 0 评论 -
javascript数组多字段排序
对于需要多字段排序的数组,我们可以借用javascript的原生数组api来完成,这个api就是sort方法。arr.sort(sortby)这个方法的sortby参数可选,这个参数是一个回调方法。参数:该方法有两个参数,这两个参数是当前比较的两个元素。返回值:大于0时将两个值互换,否则不换。所以,我们就可以这样来写:function sortNumber(a,b)...原创 2018-08-20 18:04:20 · 8874 阅读 · 5 评论 -
c++用vector先按学生的年级排序,再按学生的分数排序算法
// VectorSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdio.h"#include "string.h"#include using namespace std;struct Stu{ std::string name; int level; int score;};int _tmai原创 2018-03-31 15:31:51 · 1487 阅读 · 0 评论 -
八大排序算法-归并排序
归并排序的定义:是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序的基本思想:设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为n-i +1、n-m。1、j=m+1;k=i;i=i; 置两个子表的起始下标及辅助数组的起始下标。2、若i>m 或j>原创 2017-10-23 14:47:15 · 278 阅读 · 0 评论 -
八大排序算法-快速排序
快速排序算法的定义是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法的基本思想: 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,...原创 2017-10-19 10:01:10 · 1183 阅读 · 0 评论 -
八大排序算法-堆排序
在说堆排序之前,要先说明二叉堆的概念。因为堆排序就是通过二叉堆来实现的。注:以下说会用堆来作二叉堆的简称。至于堆的定义,大家可以自行查阅。在了解完堆之后,我们知道堆有大根堆和小根堆的不同。我们先了解堆排序的思想,之后用一个大根堆来实现代码。堆排序的定义是:利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征(这里我们用大根堆),调整数组的存储序,使之成为一个堆,将堆顶元素输出原创 2017-10-18 10:19:40 · 233 阅读 · 0 评论 -
八大排序算法-希尔排序
希尔的定义:希尔排序是插入算法的一种,也叫缩小增量排序。是直接插入排序算法的一种改良版。希尔算法是把数据序列按下标的一定增量分组,对每组使用直接插入排序算法进行排序;然后依次缩减增量再进行排序,待整个序列中的元素基本(注:没有全部完成排序)有序时,再对全体元素进行一次直接插入排序。基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所以距离为d1的倍数的记录放在同一个组原创 2017-10-16 09:47:13 · 260 阅读 · 0 评论 -
八大排序算法-直接插入排序
直接插入排序的思想是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待原创 2017-10-14 15:57:11 · 289 阅读 · 0 评论 -
关于二叉树二叉堆的一些基本概念
文章转载自:http://blog.csdn.net/include_u/article/details/48092129在看到算法导论的堆排序的时候,对于二叉树,二叉堆概念不是很清楚,所以查阅了一些资料和博客。将相关的基本概念总结在博客里面。二叉树:是树的一种,主要的特点是二叉树的所有节点最多只有两个叶节点。除此之外没有别的要求完全二叉树:就是转载 2017-10-17 15:35:45 · 1171 阅读 · 0 评论 -
八大排序算法-简单选择排序
基本思想:先把数列的第一个数当作最小值,保存起来,用最小值和之后的数据比较,小于最小值则替代最小值。时间复杂度为O(n^2)。实例:int arr[] = { 35, 28, 58, 10, 61, 58, 97, 17 };int k = sizeof(arr) / sizeof(arr[0]);void simpleSelectSort(int data[], int n)原创 2017-10-16 15:10:17 · 723 阅读 · 0 评论 -
八大排序算法-基数排序
基数排序(radix sort)定义:属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。 基数排序基本思想:第一步以LSD为例,假设原来有一串数值如下所示:73, 22, 93, 43, 55, 14, 28, 65,原创 2017-10-23 15:37:52 · 407 阅读 · 0 评论 -
八大排序算法总结
排序是计算机程序设计中的一种重要操作,其功能是对一个数据元素集合或序列重新排列成一个按数据元素某个相知有序的序列。可将排序方法分为两大类: 一类是内部排序, 指的是待排序记录存放在计算机存储器中进行的排序过程;另一类是外部排序, 指的是待排序记录的数量很大,以至于内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。而内部排序又为:其中快速排序是目前排序方法中原创 2017-10-14 14:31:49 · 262 阅读 · 0 评论 -
八大排序算法-冒泡排序
冒泡排序算法的思想如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序算法:void bubble_sort(int a[], int n){原创 2017-10-18 16:22:53 · 1036 阅读 · 0 评论