各种排序算法及程序
来源:互联网 发布:java web网站开发 编辑:程序博客网 时间:2024/06/05 16:12
。。。题主懒了好几天,追剧到凌晨也是心累啊。。。
开始正题(由于题主只是刚接触数据结构课的大二狗,写的有欠缺,或者各位有高见请指出,多谢!)
声明:在未特别说明时,假定被排序的数据集合用具有如下类型的结构数组表示。(此声明也适用于接下来的几篇排序算法)
struct records{
keytype key;
fields other;
};
typedef records LIST[maxsize];//假定有n个数组元素,接下来的排序如未有特殊说明都为升序排序
1.气泡排序
一种简单的排序法,第一遍使最小数字浮到最顶部,第二遍使第二小的数浮到第二顺序位置……
算法如下:
void Sort(int n,LIST A){int x,y;for(i=1;i<=n-1;i++){for(j=n;j>=i+1;j++){if(A[j].key<A[j-1].key){Swap(A[j],A[j-1]);}}}}void Swap(records &x,records &y){records temp;temp=x;x=y;y=temp;}时间复杂度为C(n^2);
2.插入排序
#define -999999999 INF
void Sort(int n,LIST A){int i,j;A[0].key=INF;for(i=1;i<=n;i++){j=i;while(A[j].key<A[j-1].key){Swap(A[j],A[j-1]);j=j-1;}}}时间复杂性为O(n^2)
3.选择排序
void Sort(int n,LIST A){keytype lowkey;int lowindex;for(i=1;i<=n;i++)//书上给出i<=n,不过感觉i<=n-1即可{lowindex=i;lowkey=A[i].key;for(j=i;j<=n;j++){if(A[j].key<lowkey){lowkey=A[j].key;lowindex=j;}Swap(A[i],A[lowindex]);//第i个位置应该放谁}}}时间复杂度为O(n^2)
在现实中,如果记录较大,为了减少调整记录位置的时间,可以用一个数组存放记录的指针,交换时只需交换记录指针的相对位置。排序的结果是使记录的指针按记录的关键字不减的顺序。
阅读全文
0 0
- 各种排序算法及程序
- 堆排序及各种排序算法总结
- [算法] 各种排序算法思想及比较
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现 .
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其Java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 各种排序算法及其java程序实现
- 全志R16平台的tinav2.1的系统和parrot v1.1的内核的合成(分色排版)V1.0
- 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
- 测试职业的发展方向
- Mapper中sql语句不等于的表示
- [JSP&JDBC]Statement/ResultSet/PreparedStatement
- 各种排序算法及程序
- 资源之基础知识(一)
- 数据结构----并查集Java
- 理解 IntelliJ IDEA 的项目配置和Web部署
- 试水VISA编程(1)——对仪器的基本的控制
- super|this
- Python 管理系统程序
- SpringMVC RequestContextListener配置问题
- 使用Android Studio时报错 Manifest merger failed...Suggestion: add 'tools:replace="android:label"'