排序汇总
来源:互联网 发布:sopcast ubuntu 编辑:程序博客网 时间:2024/06/03 16:47
今天将之前学习的各种排序方法回顾重写了一遍,感觉还是代码写的太少了,要时刻提醒自己大神还是要代码敲出来的,将今天写的代码留在这吧,感觉过段时间会生疏,还要在来看看然后再敲几遍,简单的就没有注释了,针对自己开始疑惑的地方有注释,欢迎大家指点,直接上代码吧。
int HalfInsert(int *p,int b,int e,int data)//折半插入{ if(b>e) return -1; int m=b+(e-b)/2; int te=e; while(b<=te) { if(data<p[m]) te=m-1; else if(data>p[m]) b=m+1; else { b=m; break; } m=b+(te-b)/2; } //b就是要插入的位置 for(int i=e;i>=b;--i) { p[i+1]=p[i]; } p[b]=data; return b;}void InsertionSort(int *p,int len)//插入排序,调用折半插入{ //从数组第二个数据开始做插入排序,第一个数据单独的不用排序 for(int i=1;i<len;++i) { HalfInsert(p,0,i-1,p[i]); } //p[1] 是在p[0]p[0]间做插入 //p[2] 是在p[0]p[1]间做插入}void QuickSort(int *p,int b,int e)//快排{ if(b>e) return; int key=b; for(int i=b+1;i<=e;++i) { if(p[i]<p[b]) { ++key; if(key!=i)//排除相对于p[b]的第一个数与p[b]交换的情况 { int t = p[i]; p[i] = p[key]; p[key] = t; } } } if(key!=b) { int t = p[b]; p[b] = p[key]; p[key] = t; } QuickSort(p,b,key-1); QuickSort(p,key+1,e);}void MergeSort(int *p,int b,int e,int*help)//归并排序{ if(b>=e) return; int m=b+(e-b)/2;//数组划分点 int index_L=b;//左部分起点 int index_R=m+1;//右部分起点 int index_help=b;//帮助数组起点 MergeSort(p,index_L,m,help); MergeSort(p,index_R,e,help); while(index_L<=m&&index_R<=e) { if(p[index_L]<p[index_R]) help[index_help++]=p[index_L++]; else help[index_help++]=p[index_R++]; } if(index_L>m) { while(index_R<=e) { help[index_help++]=p[index_R++]; } } else { while(index_L<=m) { help[index_help++]=p[index_L++]; } } for(int i=b;i<=e;++i) { p[i]=help[i]; }}void SeleteSort(int *p,int len)//选择排序{ for(int i=0;i<len-1;++i) { int k=i; for(int j=i+1;j<len;++j) { if(p[k]<p[j]) k=j; } if(k!=i) { int temp=p[k]; p[k]=p[i]; p[i]=temp; } }}void BubbleSort(int *p,int len)//冒泡排序{ for(int i=0;i<len-1;++i) { for(int j=0;j<len-i-1;++j) { if(p[j]>p[j+1]) { int temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } }}
1 0
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序汇总
- 排序算法--排序算法汇总
- 排序算法--排序算法汇总
- 数据汇总加排序
- C#排序大汇总
- 排序算法汇总
- 数据汇总加排序
- 数据汇总加排序
- 数据汇总加排序
- 数据汇总加排序
- MySQL 业务查询
- 表达式-Thymeleaf常见用法(一)
- opencv生成摄像头标定的黑白方格
- 初学halcon,遇到的dev_open_window的问题
- C#文件读写追加创建目录,判断目录是否存在等操作
- 排序汇总
- ORB-SLAM(1) --- 让程序飞起来
- Java继承_重写(二)
- Android之ndk-build -j4
- cs231n 编程作业(2)学习心得——多种优化方法
- Android studio常用快捷键
- 不断突破道,用道来挣钱才能长稳,才能心安!
- 哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度
- 你知道为什么你总是怀才不遇且没发财么?因为你一直都不会利用!