首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

排序查寻

2012-10-27 
排序查找对一个数组进行一个数据的查找,首先进行一个排序,然后再进行折半查找!??/**?? * 直接插入排序?? *

排序查找

对一个数组进行一个数据的查找,首先进行一个排序,然后再进行折半查找!

?

?/**
?? * 直接插入排序
?? * @param data
?? */
? public static void?? insertSort(int [] data)
? {

??//i为第几趟排序,第一趟初始化数据(1),对顺序表Data中的记录Data[1...n]按递增序进行插入排序
?? for(int i =2 ; i< data.length ; i++)
?? {
??? int tempdata = 0 ;
??? if(data[i] < data[i-1])
??? {
???? tempdata = data[i];
???? data[i] = data[i-1];
????//从右向左在有序区 Data[1..i-1]中查找Data[i]的插入位置
???? for(int j =i-2; j>=0&&tempdata<data[j] ; j--)
???? {
?????// 向后移位
????? data[j+1] = data[j];
??????// 在正确的位置插入正确的数据
????? data[j]= tempdata ;
???? }
????
??? }
?? }
? }

?

?

?

/**
? * 折半查询
? * @param a
? * @param b
? * @return
? */
?public static int find1(int[] a, int b) {

??int low = 1;
??int high = a.length;
??//只有当low的值小于等于high时,才需要进行查找
??while (low <= high)
??{
???//middle为长度
???int middle = (low + high) / 2;

???//在左边继续查找
???if (b < a[middle - 1])
???{
????high = middle - 1;

????//find(a,b);

???}
???//在右边查找
???else if (b > a[middle - 1])
???{
????low = middle + 1;
????//?find(a,b);
???}
???// 找到了
???else if (b == a[middle - 1])
???{
????System.out.println(middle);
????return middle;
???}

??}
??//没找到
??System.out.println(-1);
??return -1;

?}

分析:待续

?

热点排行