- 浏览: 761707 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
数据表:待排序数据元素的有很集合
排序码:通常数据元素有多个个属性域,即多少个数据成员组成,其中有一个属性域可用来区分元素,作为排序依据。
稳定性:2个元素R1,R2,它们的排序码K1=k2,在排序前R1在R2前,排序后R1仍在R2之前,则称这个排序方法是稳定的。
内部排序:在排序期间数据元素全部存放在内存的排序。
外部排序:在排序期间全部元素个数太多,不能同时存放内存,必须根据排序过程的要求,不断在内,外存之间移动的排序
直接插入排序:稳定
希尔排序:不稳定
O(n*n):
直接插入,冒泡,直接选择
O(nlogn):
快速:用的最多
堆:平均性能不如快速
归并:稳定,但需附加O(n)内存空间
排序码:通常数据元素有多个个属性域,即多少个数据成员组成,其中有一个属性域可用来区分元素,作为排序依据。
稳定性:2个元素R1,R2,它们的排序码K1=k2,在排序前R1在R2前,排序后R1仍在R2之前,则称这个排序方法是稳定的。
内部排序:在排序期间数据元素全部存放在内存的排序。
外部排序:在排序期间全部元素个数太多,不能同时存放内存,必须根据排序过程的要求,不断在内,外存之间移动的排序
直接插入排序:稳定
#include<iostream> using namespace std; /* 如果当前值大于前一个数,那么,前面的数向后移动,直 到当前值找到合适的插入位置为止 */ void insertSort(int *a,int size){ int j,temp; for(int i=1;i<size;i++){ if(a[i]<a[i-1]){ temp = a[i]; j = i; do{ a[j]=a[j-1]; j--; }while(a[j]>temp&&j>0); a[j+1] = temp; } } } int main(){ int a[] = {1,3,2,5,6,4,9,10,8,7}; insertSort(a,10); for(int i=0;i<10;++i) cout << a[i] << " "; } 1 2 3 4 5 6 7 8 9 10
希尔排序:不稳定
#include<iostream> using namespace std; void shellSort(int *a,int left,int right){ int i,j,gap = right-left+1; int temp; do{ gap = gap/3+1; for(i=left+gap;i<=right;i++){ if(a[i]<a[i-gap]){ temp = a[i]; j = i-gap; do{ a[j+gap] = a[j]; j = j-gap; }while(j>=left&&temp<a[j]); a[j+gap] = temp; } } }while(gap>1); } int main() { int a[] = {1,3,2,5,6,4,9,10,8,7}; shellSort(a,0,9); for(int i=0;i<10;++i) cout << a[i] << " "; } 1 2 3 4 5 6 7 8 9 10
O(n*n):
直接插入,冒泡,直接选择
O(nlogn):
快速:用的最多
堆:平均性能不如快速
归并:稳定,但需附加O(n)内存空间
发表评论
-
时间复杂度推导
2012-06-05 22:57 9791.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 806数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
图的基本概念
2011-06-20 16:18 746完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 511红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1097template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1077散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 800#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 924字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 921改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 883bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 910Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 949在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 596森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1263binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 841一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 888结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 934广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 929矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 598PQueue.h #ifndef PQUEUE_H #d ... -
链式队列
2011-05-20 12:05 827LinkedQueue.h #ifndef LINKEDQ ...
相关推荐
生产作业计划与排序概念.pptx
归并排序
本中班数学活动“有趣的排序”旨在通过寓教于乐的方式,帮助幼儿理解和应用排序概念,这是早期数学教育中的重要组成部分。排序是基础数学能力的基础,它涉及比较、模式识别和逻辑推理,对发展幼儿的思维能力和解决...
"java堆排序概念原理介绍" java堆排序是一种基于比较的排序算法,它通过构建一个堆来实现排序。下面是关于java堆排序概念原理的详细介绍: 什么是堆排序 堆排序是一种基于比较的排序算法,它通过构建一个堆来实现...
在VB(Visual Basic)编程中,...总之,这个“vb动态排序演示”项目是一个很好的学习资源,它可以帮助你掌握VB中的动态排序概念,特别是冒泡排序的实现。通过研究和实践,你可以加深对排序算法的理解,提高编程能力。
冒泡排序的时间复杂度为O(n^2),在处理大量数据时效率较低,但其简单易懂的实现方式使得它在教学和理解排序概念时很有帮助。 **插入排序(Insertion Sort)** 插入排序的基本思想是将未排序的元素逐个插入到已排序...
该电子书包含了详细的排序概念覆盖了算法中几乎所有的排序算法,附带插图,以及各排序算法的优劣,总结
冒泡排序和选择排序是两种基础且常见的计算机编程中的排序算法,主要应用于数据处理和算法学习。...这两种算法虽然在效率上不如其他高级排序算法,但它们在理解和教学排序概念方面具有重要的作用。
这些延伸活动有助于孩子们将抽象的数学知识转化为具体的生活经验,加深对排序概念的理解和运用。 在活动反思中,教师提到了一些在教学过程中的不足,例如操作材料的单一性和对孩子操作指导的不明确。这提醒了我们在...
标签“c 一个简单的排序”进一步确认了这个代码示例可能涉及的是C++语言中的基本排序概念,可能适用于初学者或者作为教学示例。 至于压缩包内的文件“排序”,可能是包含了整个排序算法的C++源代码文件,可能包含了...
冒泡排序是一种简单的排序算法,它的基本思想是通过对待...效率问题:尽管冒泡排序概念上简单易懂,但它并不是最高效的排序算法,特别是对于大型数据集。它的平均和最坏情况时间复杂度均为O(n²),其中n是列表的长度。
1. **排序概念**: - 排序是指将一组无序的记录序列调整为有序的过程。这里的记录通常包含一个或多个数据项,其中的关键字域用于唯一标识记录。如果关键字能唯一标识记录,那么它被称为主关键字,否则为次关键字。...
1. 提升幼儿对排序概念的理解:通过具体的操作和游戏,帮助幼儿理解排序的含义,即按照一定的规则将对象进行排列。 2. 发展幼儿的观察能力和逻辑思维:通过对比和分类的活动,培养幼儿的观察能力,同时锻炼他们的...
在这个名为"有趣的排序"的活动中,教师旨在让孩子们在愉快的氛围中理解和运用排序概念。 活动目标非常明确,首先,它鼓励孩子们自由排序,这不仅让他们有机会自由探索,还能在尝试和发现不同排序方法的过程中找到...
总结来说,这三种排序算法各有特点,直接插入排序适合小规模或部分有序的数据,希尔排序在效率上优于直接插入排序,而简单选择排序则适用于理解排序概念的初学者。在实际编程中,根据数据特性和性能需求,开发者会...
- **排序概念**:排序是指根据特定的关键字(如数值或字符串)对一系列数据进行升序或降序排列的过程。 - **稳定性**:稳定排序算法保证相等的元素在排序后保持原有的相对顺序,而不稳定排序则不保证这一点。 - *...
标题中的“012工作表排序1共1页.pdf.zip”指示了这是一个关于电子表格排序的教程或参考资料,被压缩成ZIP格式,可能包含多个页面,但描述中提到的是“共1页”,这意味着内容可能相对简洁,聚焦在单一的排序概念上。...
使用场景及目标:本指南适用于任何试图掌握排序概念的人士,在具体实践中,无论是处理小规模还是中型数值列表都非常有用。 额外建议:为加深对排序操作的理解,在动手尝试之前先理解每个指令的具体含义和执行效果。
尽管这里的排序与计算机科学中的排序算法不同,但孩子们在这个阶段学到的排序概念,其实是未来学习编程、理解复杂问题解决策略的基础。排序能力的培养有助于发展孩子的逻辑思维和解决问题的能力,这对他们的成长至关...