
排序算法
元解~殇怀
这个作者很懒,什么都没留下…
展开
-
线性表的链式描述代码
线性表的链式描述代码#include <iostream>using namespace std;struct ListNode { int data; struct ListNode* next;};void createList(ListNode* head) { //构造新链表 ListNode* p = head; //为head赋予新指针 int n; cin >> n; p->data = n; //避免首结点值为空 while (1)原创 2020-11-02 19:11:31 · 114 阅读 · 0 评论 -
冒泡排序,插入排序,基数排序(三种)
冒泡排序,插入排序,基数排序(三种)//C++实现冒泡排序#include <iostream>using namespace std; void print(int* pData, int count){ for (int i = 0; i< count; i++) { cout << pData[i] << " "; } cout << endl;} void BubbleSort(int* pData, int coun原创 2020-11-01 09:01:34 · 122 阅读 · 0 评论 -
数据结构算法之基数排序(箱子排序的一种扩展)
数据结构算法之基数排序(箱子排序的一种扩展)综述步骤代码展示后记综述关于基数排序是这样的:1.我们类比箱子排序,基数排序就是对一串数字的的个位,十位,百位…进行分别排序,再将最终的排序结果输出,从而完成对整个一串数字的排序。这里基数排序是为了解决箱子排序的一些弊端:就比如数字范围过大,但是一串数字的个数较少。这样我们在初始化箱子的时候会浪费大量的空间和时间。所以我们用基数排序来减少初始化箱子所花费的时间。2.因为每一个位上的数字是从0-9的所以我们对一个位数上的箱子进行初始化的时候,最多只需要初始化原创 2020-09-27 11:06:02 · 193 阅读 · 0 评论 -
数据结构之创建链表并对其初始化,然后进行箱子排序实例化教程
数据结构之创建链表并对其初始化,然后进行箱子排序实例化教程概述步骤一步骤二步骤三关于循环链表概述本次我们讨论一下如何创建并初始化一个链表,然后对其中的元素进行箱子排序。步骤一第一步,我们进行前期的代码准备。构建一个结构体作为链表的节点。构建一个类,作为使用链表的接口。#include<iostream>using namespace std;template<class T>struct chainNode { T element; chainNode<原创 2020-09-24 19:06:21 · 469 阅读 · 0 评论 -
箱子排序(线性表-链式描述应用)
箱子排序(线性表-链式描述应用)概述步骤构建studentRecord结构体概述假定用一个线性表来保存一个班级的学生清单。节点数据有:学生姓名,社会保险号码,每次作业和考试分数,所有作业和考试总分的加权总分。假定分数是一个0-100的整数。我们要按总分你排序。我们采用一种更快的排序方法:箱子排序。这种方法首先把分数相同的节点放在同一个箱子里,然后把箱子连接起来得到一个有序的链表。步骤箱子排序需要做的是:1.逐个删除链表中的节点,把删除的节点分配带相应的箱子里2.把每一个箱子中收集的链表并连接起来原创 2020-09-22 13:25:50 · 257 阅读 · 0 评论 -
数据结构之线性表——数组描述
数据结构之线性表——数组描述数据对象和数据结构数据对象数据结构线性表数据结构抽象数据类型数组描述描述变长一维数组类arrayList数据对象和数据结构数据对象数据对象是一组实例值,例如:boollean={false,true}digit={1,2,3,4,5,6,7,8,9}letter={A,B,C,D,E,F,G,H,I,…,Z}boollean,digit,letter这些都是数据对象,在每个数据对象中,比如在boollean中有true和false两个实例;而0,1,2,…,9是di原创 2020-09-18 10:28:55 · 932 阅读 · 0 评论 -
折半查找(二分法查找)
折半查找(二分法查找)我们在对一个有序数组中查找元素x,传统的顺序查找的时间复杂度对于有序数组中查找元素x来讲是过于缓慢的和耗时的,所以,我们充分利用有序数组的性质,开发出一种折半查找即二分法查找的程序来加提高查找程序运行的效率。与STL的算法binary_search非常类似,变量left和right分别表示搜索段的左右两个端点。开始的时候,在0~n-1之间进行查找,因此left 和right 的初始值分别为0和n-1。在查找过程中,保持不变的是:x是数组a[0,n-1]中的元素,当且仅当x是a[le原创 2020-09-17 07:45:13 · 232 阅读 · 0 评论 -
求递归排列的渐进复杂性
求递归排列的渐进复杂性1.先使用递归生成排列对一个数组,将数组中所有的元素的排列全部输出出来。下面展示递归生成排列的代码:下面展示一些 内联代码片。#include<iostream>#include<iterator>using namespace std;template <class T>void permutation(T list[],int k,int m){ if(k==m) { copy(list,list+m+1,ostre原创 2020-09-14 20:45:55 · 196 阅读 · 0 评论 -
最好、最坏和平均操作计数
最好,最坏和平均操作计数例一:顺序搜索在顺序搜索中,我们对数组按顺序进行搜索我们需要的数,要确定确定数x与数组元素之间的比较次数。我们自然地把n作为实例特征。可是比较次数不是由n唯一确定的。例如,如果n=100,而且x=a[0]那么只需要一次查找。而如果n不在数组中那么需要比较100次。所以最少比较1次,做多比较n次,这是我们查找成功的平均比较次数就是:[1+2+3+4+…+n-1+n]/n=[n+1]/2;例二:在有序数组中插入元素在有序数组中插入一个新元素,插入之后数组依然有序。例如在数组a原创 2020-09-14 19:20:03 · 252 阅读 · 0 评论 -
数据结构名次计算和排序算法
数据结构的一些算法1.名次计算以及排序1.名次计算以及排序给数组a[n]中的元素进行名次的计算。就比如a[]={2,1,4,7,5},计算完名次之后会出现r[]={2,1,3,5,4},每一个r中元素代表的是其在a数组中对应元素所排的名次。下面给出代码:#include<iostream>using namespace std;template<class T>void rank(T a[],int n,int r[]){ for(int i=0;i<n;i原创 2020-09-14 16:32:43 · 1869 阅读 · 1 评论