直接插入排序、折半插入排序、希尔排序
来源:互联网 发布:少年班 知乎 编辑:程序博客网 时间:2024/05/07 01:30
#include<iostream>using namespace std;//升序//直接插入排序(稳定)void InsertSort(int arr[],int left,int right){for(int i=left+1;i<=right;i++){if(arr[i]<arr[i-1]){int temp=arr[i];int j=i-1;do{arr[j+1]=arr[j];j--;}while(j>=left && temp<arr[j]);arr[j+1]=temp;}}}//折半插入排序(稳定)void BinaryInsertSort(int arr[],int left,int right){for(int i=left+1;i<=right;i++){int temp=arr[i];int low=left;int high=i-1;while(low<=high){int middle=(low+high)/2;if(temp<arr[middle]){high=middle-1;}else{low=middle+1;}}for(int k=i-1;k>=low;k--){arr[k+1]=arr[k];}arr[low]=temp;}}//希尔排序(设置间隔gap,再利用直接插入排序的思想) (不稳定)void ShellSort(int arr[],int left,int right){int gap=right-left+1;do{gap=gap/3+1;for(int i=left+gap;i<=right;i++){if(arr[i]<arr[i-gap]){int temp=arr[i];int j=i-gap;do{arr[j+gap]=arr[j];j=j-gap;}while(j>=left && temp<arr[j]);arr[j+gap]=temp;}}}while(gap>1);}void test(){int arr[7]={21,16,49,25,20,13,7};//InsertSort(arr,0,6);//BinaryInsertSort(arr,0,6);ShellSort(arr,0,6);for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++){cout<<arr[i]<<" ";}cout<<endl;}int main(){test();system("pause");return 0;}
0 0
- 插入排序(希尔排序、直接插入、折半插入排序)
- 插入排序:直接插入排序,折半查找排序,希尔排序
- 排序算法--直接插入排序、折半插入排序、希尔排序
- 直接插入排序 && 折半插入排序 && 希尔排序
- 直接插入排序,折半插入排序,希尔排序
- 直接插入排序、折半插入排序、希尔排序
- 插入排序:直接插入, 折半插入,希尔插入
- 插入排序(直接插入排序,折半插入排序,2路插入排序,希尔排序)
- 插入排序(直接插入排序,折半插入排序,2路插入排序,希尔排序)
- 【插入排序】直接,折半,二路,希尔
- 【插入排序】直接,折半,二路,希尔
- 插入排序(直接插入,折半插入,希尔)
- 各种排序算法汇总(插入排序:直接插入排序、折半插入排序、希尔排序)
- 内部排序之插入排序:直接插入排序,折半插入排序,希尔排序
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 排序算法——插入排序(直接插入排序、折半插入排序、希尔排序)
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- 直接插入排序,折半插入排序,2-路插入排序,希尔排序
- Java web重新梳理学习一(JSP的page编译指令)
- windows server 2012的DHCP保留地址导出导入、DHCP故障转移配置、DNS条目命令导入
- SSL编程- 简单函数介绍
- vmware无法将网络更改为桥接状态
- WebStorm+Node.js开发环境的配置
- 直接插入排序、折半插入排序、希尔排序
- 自定义迭代器 iterator接口
- 数字转换为中文数字
- 关于上下文
- Android如果让其它APP能调起自己写的播放器的方法
- DataTable转换为List 【拓展方法】
- window下nodejs环境配置
- 重装win7系统分享
- 任务和返回栈