二分查找排序可以认为是插入排序的一个变种,C#代码如下,需要先写一个帮助方法Insert(),以备排序时插入所用:
public static int[] Insert(int[] array,int targetIndex,int currentIndex)
{
int value = array[currentIndex];
for (int i = currentIndex; i > targetIndex; i--)
{
array[i] = array[i - 1];
}
array[targetIndex] = value;
return array;
}
public static int[] InsertSort(int[] array)
{
int startIndex;
int endIndex;
int middle;
for (int i = 1; i < array.Length; i++)
{
startIndex = 0;
endIndex = i-1;
while (startIndex - endIndex > 1)
{
middle = ((startIndex + endIndex) - (startIndex + endIndex) % 2) / 2;
if (array[i] > array[middle])
{
startIndex = middle;
}
else
{
endIndex = middle;
}
}
if (array[i] <= array[startIndex])
{
Insert(array, startIndex, i);
}
else if (array[i] >= array[endIndex])
{
Insert(array, endIndex + 1, i);
}
else
{
Insert(array, endIndex, i);
}
}
return array;
}
分享到:
相关推荐
直接,快速,冒泡,选择,二分查找排序 用Java实现
此资源是基本插入算法的改进版本,利用数学上的二分法能提高基本插入算法的效率,包括了实例讲解以及python代码实现(每行都有注释)
C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...
文件读出数组进行选择排序和二分查找文件读出数组进行选择排序和二分查找java实现
C实现的两种二分查找。 先用快速排序对数组排序,再二分查找。
C语言实现二分查找与排序,写的比较简单。。。
通过快速排序对java对象集进行升序排序且随之进行十分查找
自己写的java选择排序,冒泡排序代码,二分查找,还有500个小孩手拉手数三退一问题,供初学者参考一下
图解详细分析,java冒泡排序、快速排序、二分查找
递归二分查找算法;
自己看书时写的算法:快速排序、二分查找 CPP文件
使用Objective C语言编写的二分查找程序,查找前使用快排排序,测试运行通过,可做为Objective C入门学习的资料。
简单地实现了二分查找的可视化。界面很简单就包括两个部分:界面左侧是可视化查找部分,右侧是二分查找的代码。 程序的关键点主要有两点: 1. 如何在页面上表示出查找程序的运行过程。 2. 如何将排序程序的运行...
1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键字有序.并且要用顺序存储结构。 基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则查找成功,否则...
二分查找(C++):查找过程中能够记录比较元素的下标并输出 二叉排序树(C++):建立;显示结点、插入元素、删除元素。
1 掌握查找的不同方法,并能用高级... 2 熟练掌握顺序表和有序表的顺序查找和二分查找方法。 3 掌握排序的不同方法,并能用高级语言实现排序算法。 4 熟练掌握顺序表的选择排序、冒泡排序和直接插入排序算法的实现。
本资源包括一份分治法算法分析文档,4份Java源程序,包括二分查找、归并排序、快速排序、比赛日程安排。
/* * --插入排序-- * 假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大, * 则将这个数的位置往后挪,直到当前外层元素的... * 该算法可以认为是插入排序的一个变种,称为二分查找排序。 */
二分查找,输入数据进行排序,运用递归查找。
查找算法:二分查找、顺序查找的实现 参见博客:http://blog.csdn.net/xiaowei_cqu/article/details/7748260