一,实现方法一
public void sort(int[] a)
{
int temp,low,mid,height,k;
for(int i=1;i<a.length;i++)
{
low=0;
height=i-1;
mid=i;
while(low<=height)
{
mid=(low+height)/2;
if(a[i]>=a[mid])
low=mid+1;
else
height=mid-1;
}
temp=a[i];
for(k=i-1;k>=low;k--)
a[k+1]=a[k];
a[k+1]=temp;
}
}
二,实现方法二
public void sort(int[] a)
{
int temp;
int low,height,mid;
for(int i=1;i<a.length;i++)
{
low=0;
height=i-1;
mid=i;
while(low<height)
{
mid=(low+height)/2;
if(a[i]>a[mid])
low=mid+1;
else
height=mid;
}
if(a[i]<=a[low])
{
temp=a[i];
for(int k=i-1;k>=low;k--)
a[k+1]=a[k];
a[low]=temp;
}
}
}
三,方法三
public void sort(int[] a)
{
int temp;
int loc;
int j;
for(int i=1;i<a.length;i++)
{
loc=middle(a,0,i-1,a[i]);
if(a[loc]>=a[i])
{
temp=a[i];
for(j=i-1;j>=loc;j--)
a[j+1]=a[j];
a[j+1]=temp;
}
}
}
private int middle(int a[], int low, int height, int key)
{
int mid = (low+height)/2;
if(a[mid]==key)
return mid;
if(a[mid]<key && low<height)
{
low=mid+1;
return middle(a,low,height,key);
}
if(a[mid]>key && low<height)
{
height=mid;
return middle(a,low,height,key);
}
return height;
}
数据结构排序算法总结,C++版,参看地址http://www.cnblogs.com/mingcn/archive/2010/10/17/Sort.html#4
分享到:
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
折半插入排序(Binary Insertion Sort)是一种改进的插入排序方法,它利用二分查找技术来减少比较次数,从而提高排序效率。现在我们来深入探讨这个主题。 首先,我们要了解插入排序的基本原理。插入排序是一种简单...
21、折半插入排序 22、21、折半插入排序 22、冒泡排序 21、折半插入排序 22、冒泡排序 23、快速排序 21、折半插入排序 22、冒泡排序 23、快速排序 24、简单选择排序 21、折半插入排序 22、冒泡排序 23、快速排序 24...
### 数据结构之折半插入排序 #### 知识点概览 1. **折半插入排序的基本概念** 2. **折半插入排序算法原理** 3. **折半插入排序的时间复杂度分析** 4. **折半插入排序的空间复杂度分析** 5. **折半插入排序与普通...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出关于希尔排序(Shell Sort)、直接插入排序(Direct Insertion Sort)以及折半插入排序(Binary Insertion Sort)的相关知识点。 ### 希尔排序...
折半插入排序(Binary Insertion Sort)是该书中介绍的一种基本排序算法,它是对传统插入排序的一种优化。本文将详细阐述折半插入排序的原理、步骤以及在实际应用中的优势和局限性。 折半插入排序是一种基于比较的...
本实验涉及了六种常见的排序算法:泡泡排序、直接插入排序、折半插入排序、希尔排序、直接选择排序,并且对每种排序算法进行了性能分析,包括统计执行时间、比较次数和交换次数。这些数据被保存在TXT文件中,便于...
### 折半插入排序知识点详解 #### 一、基本概念 **折半插入排序(Binary Search Insertion Sort)**是一种优化后的插入排序算法。传统的插入排序在将元素插入已排序序列时,通常采用顺序查找的方式来确定该元素的...
- 折半插入排序是插入排序的一个变体,它在插入元素时使用二分查找来确定插入位置,从而减少比较次数。 - 在查找插入位置时,将数组分成已排序部分和未排序部分,用二分查找找到已排序部分中合适的位置,然后将...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
数据结构排序算法中的折半插入排序,又称二分法,是对基本插入排序的一种改进,比普通的插入排序要快
10种排序算法代码+综合比较代码(直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、折半插入排序、2路插入排序),其中不仅有各种排序算法的代码,还包含10种代码在关键字...
用顺序表做的折半插入排序void BInsertSort(SqList &L) { int i,j,low,high,m; for(i=2;i;++i) { L.elem[0]=L.elem[i]; low=1; high=i-1; while(low) { m=(low+high)/2; if(L.elem[0][m]) ...
插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序...
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
用C语言编写的简单易懂的折半插入排序算法,可运行通过