内部排序合集●插入、希尔、起泡、快速、选择、堆、归并和基数排序●

本文提供了一系列内部排序算法的实例,包括插入、希尔、起泡、快速、选择、堆、归并和基数排序等,并展示了部分排序过程及代码实现。

内部排序合集(插入、希尔、起泡、快速、选择、堆、归并和基数排序)
这是我在我们期末的时候写的一些内部排序的例子。因为我们的数据结构考试的范围就限定在内部排序上,所以我没有什么办法,只好对自己埋头苦干就行内部排序的编程了。有些内部排序的例子很是好理解,我们可以通过一些图示来很好地了解到这些排序的过程,但是这些程序的代码可能不是那么好写。而另外一些程序的思想既难以理解,也难于编码。着实地伤透了我的脑筋。下面就将我的程序的主框架代码展示给大家看看。注意,在这里我怎样也不好实现2-路插入排序,因为它这样的排序方法运用在顺序存储结构下不好,在判断数组越界的时候这样的复杂性使我最终放弃了这种方法。要不还不如使用其余的排序呢。
毕竟了解内部排序是一件好事,以后在看一些内部排序的时候也不至于摸不着头脑。最近我看到了一本有关介绍用C++来编辑游戏的书,它就以STL为例,讲解了STL内部实现的机理。

Code:
  1. //头文件
  2. #include<iostream>
  3. usingnamespacestd;
  4. #include"InsertionSort.h"
  5. #include"Shell'sSort.h"
  6. #include"QuickSort.h"
  7. #include"SelectionSort.h"
  8. #include"MergingSort.h"
  9. #include"RadixSort.h"
  10. //定义的宏
  11. #defineLENGTH10
  12. //主函数
  13. intmain(intargc,char**argv)
  14. {
  15. //定义一个顺序表
  16. SqLista;
  17. intobjArray[LENGTH]={278,109,63,930,589,184,505,269,8,83};
  18. a.length=LENGTH;
  19. inti;
  20. for(i=1;i<a.length+1;i++)//需要将0号位设为监视哨
  21. {
  22. a.r[i].key=objArray[i-1];
  23. a.r[i].otherinfo='/0';
  24. }
  25. //直接插入排序
  26. //InsertSort(a);
  27. //折半插入排序
  28. //BInsertSort(a);
  29. //2-路插入排序
  30. //BinRouteInsertSort(a,2);//这个算法有问题
  31. //希尔排序
  32. /*
  33. {
  34. intdlta2[3]={3,2,1};
  35. ShellSort(a,dlta2,3);
  36. }
  37. */
  38. //起泡排序
  39. //BubbleSort(a);
  40. //快速排序
  41. //QuickSort(a,1,LENGTH);
  42. //选择排序
  43. //SelectSort(a);
  44. //堆排序
  45. //HeapSort(a);
  46. //归并排序
  47. //MergeSort(a);
  48. //基数排序
  49. {
  50. SLListb;
  51. inti;
  52. b.keynum=3,b.recnum=LENGTH;//对3位整数进行基数排序
  53. for(i=1;i<=b.recnum;i++)
  54. {
  55. b.r[i].keys[0]=objArray[i-1]%10;//个位
  56. b.r[i].keys[1]=objArray[i-1]%100/10;//十位
  57. b.r[i].keys[2]=objArray[i-1]/100;//百位
  58. }
  59. RadixSort(b);
  60. }
  61. //显示排序后的数组
  62. for(i=1;i<a.length+1;i++)//需要将0号位设为监视哨
  63. cout<<a.r[i].key<<'';
  64. cout<<'/n';
  65. return0;
  66. }


要想得到这些排序的具体实现,那么就下载我的代码吧。最近我的积分由于下载一些Boost的资料而变为0了。所以需要的朋友一定要支持一下哦。(使用VS2005开发,算法都是C风格的,可以直接使用。)

Download様はこちらへ

我最新的动态:最近在研究DirectInput,希望能够在几天后写一篇技术文章,分享一些我的经验。

内部排序合集插入希尔起泡快速选择归并基数排序) 这是我在我们期末的时候写的一些内部排序的例子。因为我们的数据结构考试的范围就限定在内部排序上,所以我没有什么办法,只好对自己埋头苦干就行内部排序的编程了。有些内部排序的例子很是好理解,我们可以通过一些图示来很好地了解到这些排序的过程,但是这些程序的代码可能不是那么好写。而另外一些程序的思想既难以理解,也难于编码。着实地伤透了我的脑筋。下面就将我的程序的主框架代码展示给大家看看。注意,在这里我怎样也不好实现2-路插入排序,因为它这样的排序方法运用在顺序存储结构下不好,在判断数组越界的时候这样的复杂性使我最终放弃了这种方法。要不还不如使用其余的排序呢。 毕竟了解内部排序是一件好事,以后在看一些内部排序的时候也不至于摸不着头脑。最近我看到了一本有关介绍用C++来编辑游戏的书,它就以STL为例,讲解了STL内部实现的机理。 // 头文件 #include using namespace std; #include "InsertionSort.h" #include "Shell'sSort.h" #include "QuickSort.h" #include "SelectionSort.h" #include "MergingSort.h" #include "RadixSort.h" // 定义的宏 #define LENGTH 10 // 主函数 int main( int argc, char** argv ) { // 定义一个顺序表 SqList a; int objArray[LENGTH] = { 278, 109, 63, 930, 589, 184, 505, 269, 8, 83 }; a.length = LENGTH; int i; for ( i = 1; i < a.length + 1; i++ )// 需要将0号位设为监视哨 { a.r[i].key = objArray[i-1]; a.r[i].otherinfo = '\0'; } // 直接插入排序 //InsertSort( a ); // 折半插入排序 //BInsertSort( a ); // 2-路插入排序 //BinRouteInsertSort( a, 2 );// 这个算法有问题 // 希尔排序 /* { int dlta2[3] = { 3, 2, 1 }; ShellSort( a, dlta2, 3 ); } */ // 起泡排序 //BubbleSort( a ); // 快速排序 //QuickSort( a, 1, LENGTH ); // 选择排序 //SelectSort( a ); // 排序 //HeapSort( a ); // 归并排序 //MergeSort( a ); // 基数排序 { SLList b; int i; b.keynum = 3, b.recnum = LENGTH;// 对3位整数进行基数排序 for ( i = 1; i <= b.recnum; i++ ) { b.r[i].keys[0] = objArray[i-1] % 10;// 个位 b.r[i].keys[1] = objArray[i-1] % 100 / 10;// 十位 b.r[i].keys[2] = objArray[i-1] / 100;// 百位 } RadixSort( b ); } // 显示排序后的数组 for ( i = 1; i < a.length + 1; i++ )// 需要将0号位设为监视哨 cout<<a.r[i].key<<' '; cout<<'\n'; return 0; } 要想得到这些排序的具体实现,那么就下载我的代码吧。最近我的积分由于下载一些Boost的资料而变为0了。所以需要的朋友一定要支持一下哦。(使用VS2005开发,算法都是C风格的,可以直接使用。) 我最新的动态:最近在研究DirectInput,希望能够在几天后写一篇技术文章,分享一些我的经验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值