折半排序法(二分插入排序法)
来源:互联网 发布:web聊天室源码 编辑:程序博客网 时间:2024/05/16 01:56
/*------------------------------------------------------------------------------------------------
折半排序法(二分插入排序法)
排序原理:其实也属于插入法类型,分已排序和未排序部分.然后将未排序
折半排序法(二分插入排序法)
排序原理:其实也属于插入法类型,分已排序和未排序部分.然后将未排序
部分元素逐个排序插入,但是插入的过程不同,需要每次求一个
中间位置,和中间位置元素比较大小,然后根据大小情况,将高位
左移或者将低位右移,再求中间元素比较,直到找到合适位置后,
将其后已排序元素全部后移一位,再插入该匀速即可.此方法中
每步打印的high和low关系应为high+1=low
-----------------------------------------------------------------------------------------------*/#include<stdio.h>void Half_Sort(int ar[],int len);int main(void){int i,n;puts("Input the number of elements to the array:");scanf("%d",&n);int ar[n]; //变长数组,n要在声明之前得到 printf("Input %d elements of the array:\n",n);for(i=0;i<n;i++) //读取数组元素scanf("%d",&ar[i]);Half_Sort(ar,n); printf("ar[%d] = ",n);for(i=0;i<n;i++) //逐个打印数组元素 printf("%d ",ar[i]); putchar('\n');return 0;}void Half_Sort(int ar[],int len)//折半排序{int i,j,temp,low,mid,high; for(i=1;i<len;i++) //最开始第一个元素仍然被看作已经排好的部分{low=0; //最低位置temp=ar[i]; //要插入的元素,已经排好序的最高位的下一位元素 high=i-1; //最高位置while(low<=high) {mid=(low+high)/2; //折中,取中间位置if(ar[mid]>temp) //判断要插入的元素和中间元素的大小high=mid-1; //中间元素大,最高位置取当前中间位置的前一位,重新再求中间位置elselow=mid+1; //中间元素小,最高位置取当前中间位置的后一位,重新再求中间位置}printf("hight =%3d low =%3d\n",high,low);//查看每次寻找到位置后的高位和低位的位置for(j=i-1;j>high;j--) //将(high+1)~i的所有元素后移一位ar[j+1]=ar[j]; ar[high+1]=temp; //插入元素}}
- 折半排序法(二分插入排序法)
- 折半排序法(二分插入排序法)
- 二分排序法(折半插入法)
- 二分排序法(折半插入法)
- 折半(二分)插入排序
- 折半(二分)插入排序
- 折半插入排序法
- 折半(二分)插入排序
- 折半查找插入排序法
- 折半插入排序法---排序算法(二)
- Java排序之插入排序[二分、折半插入排序](4)
- (第11讲)二分排序(折半插入排序法)
- Java 实现二分(折半)插入排序
- 折半二分插入排序Java代码
- 【初探】 二分(折半)插入排序
- 排序算法--折半插入排序(二分查找排序)
- java实现折半插入排序(二分插入排序)
- 内部排序(二)折半插入法
- 希尔排序法
- 使 WebBrowser 更简单的插入、调用执行脚本, 可安装 jQuery 脚本的 C# 开源代码 - IEBrowser
- SQL Server中SQL语句的宏表示方法
- 小型搜索引擎搭建的几个关键点
- Easy.CD-DA.Extractor.16.v16.1.0.1_CRKEXE-FFF
- 折半排序法(二分插入排序法)
- SQL从基础到高级
- 我的祝福,算不算太迟
- 线程同步之经典生产者-消费者模型
- 应用界面主题Theme使用方法
- 上不了网,怎么检查?
- VIM 文件编码识别与乱码处理
- Android/ Eclipse/ Java Build Path/ Order and Explort 的作用
- 关于关键字final的总结