折半插入排序
来源:互联网 发布:网络十大神曲 编辑:程序博客网 时间:2024/06/01 19:29
折半插入排序相对于插入排序来说次数能少一点,因为插入时,前方元素已排序好,所以只用和中间那个元素比较,比中间元素小,那就从0——中间元素这一段继续和中间元素比较,依次类推下去。右边也一样。
代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 折半查找插入排序{ class Program { static void Main(string[] args) { // 待排序的数组 int[] array = { 1, 0, 2, 5, 3, 4, 9, 8, 10, 6, 7 }; binaryInsertSort(array); // 显示排序后的结果。 Console.WriteLine("排序后: "); for (int i = 0; i < array.Length; i++) { Console.Write(array[i] + " "); } Console.ReadKey(); } /// <summary> /// 插入排序 /// </summary> /// <param name="array">要排序的数组</param> private static void binaryInsertSort(int[] array) { for (int i = 1; i < array.Length; i++) { int temp = array[i]; int low = 0;//左方元素下表为0 int high = i - 1;//我们要插入元素下标为i,所以已排序数组最右边下标为i-1 while (low <= high) { int mid = (low + high) / 2;//前方已排序数组1分为2 /*如果新加入元素比中间元素小,那就是使 * high=mid-1,而low不变,意思就是只用在左边 * 进行查找了 */ if (temp < array[mid]) { high = mid - 1; } /*新插入元素比中间元素大,那么就只用在右方查找了 * 让low=mid+1,而high不变 */ else { low = mid + 1; } } /*上方代码执行完毕之后low的前方应该插入我们想要 * 插入的元素,此时low后方元素整体后移一位 * 移动完之后low这个位置把我们要加进去的元素放进去 * 就OK了 */ for (int j = i; j >= low + 1; j--) { array[j] = array[j - 1]; } array[low] = temp; } } }}
0 0
- 插入排序--折半插入
- 插入排序--折半插入
- 排序:折半插入排序
- 排序--折半插入排序
- 排序-折半插入排序
- 【插入排序】折半插入排序
- 插入排序--折半插入排序
- 折半插入排序,插入排序
- 折半插入排序
- 折半插入排序
- 折半插入排序算法
- 折半插入排序算法
- 折半插入排序 练习
- 折半插入排序
- 折半插入排序
- 折半插入排序
- 折半插入排序 Java
- 折半插入排序算法
- 杭电3371——————MST的简单变形
- 哈夫曼树
- 小马Linux 之 虚拟机环境下(redhat5.8)制作微型linux系统
- 五个linux查找命令
- UITextField详解
- 折半插入排序
- Eclipse编程之旅:Shell入门(1)
- Oracle数据库中行数的表达rownum
- UVA 10003 - Cutting Sticks
- 设置mysql允许外部IP访问
- spring学习4-FactoryBean
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
- 创建win32 dll
- 程序人生的四个象限和两条主线----值得一看的职业规划