问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

把一个无序的数组排序后用折半法查找其中一个数,然后怎样输出这个数字没排序前的下标

发布网友 发布时间:2022-04-24 06:29

我来回答

1个回答

热心网友 时间:2023-10-08 20:58

package ch02;

import java.util.Scanner;

public class MyTest
{
public static void main(String[] args)
{
System.out.println("请输入要查的数字总数");
int t=getInt();
if(t<=0)
System.out.println("错误");
else
{
System.out.println("请输入"+t+"个数字");
int a[]=new int[t];
for(int i=0;i<a.length;i++)
{
a[i]=getInt();
}
System.out.println("请输入要查的数字");
int h=getInt();
//记得做一个备份,用于查询排序前的,由于数组是通过地址,所以没有备份数据,排序后就没有原始数据了
int c[]=a.clone();

int result=search(a,h);
if(result==-1){
System.out.println("没找到");
}else{
System.out.println("排序后这是第"+result+"个");//这个是排序后的下标了。
int k=searchBefore(c,h);
// 这个是排序前的下标。
System.out.println("排序前这是第"+k+"个");
}
}
}

// 这个是排序后查询的下标(原有程序)
static int search(int a[],int b)
{
int z=0;
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-i-1;j++)
{
if(a[j]>a[j+1])
{z=a[j];a[j]=a[j+1];a[j+1]=z;}
}
}
int low=0,high=a.length-1;
int mid=(low+high)/2;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==b)
return mid+1;
else if(a[mid]>b)
high=mid-1;
else if(a[mid]<b)
low=mid+1;
}
return -1;
}

//这个查询没排序的下标
static int searchBefore(int b[],int c)
{
int j=0;
for(int i=0;i<b.length;i++){
if(c==b[i]){
j=++i;
break;
}
}
return j;
}

static int getInt(){
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
return i;
}

}

楼主建一个MyTest的类,把这个拷贝进去就可以运行了追问非常感谢你~
关于查询没排序的下 标还有些问题
searchbefore使用折半法了么。
我想要一个即使用折半法又能输出想查找的数字原有位置的程序
类似于给输入一个数字绑定一个号码 折半法排序后号码顺序是不变的

可以实现么? 请在帮帮我吧
........唉

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
陌陌发语音出现转码失败怎么办 女孩2010年5月10号阴历3月27早晨9点55分出生的五行缺什么 钟姓男孩名字2023年5月10日出生的 凤眼果有什么营养?凤眼果的这些营养你都知道吗? 专升本成绩多少合格 山东专升本成绩多少合格 山东2022年专升本成绩什么时候出 2024专升本成绩公布时间及入口 2023年山东专升本各专业录取分数线 什么时候出专升本成绩 山东专升本综合素质测评成绩怎么算 顺序查找法和先排序再折半法哪个效率高? 这个程序错在那里:用折半法查找数组中的一个数。 C语言中怎样利用折半查找法(二分查找法)找到数列中的一个数? C语言,折半查找法(二分查找法),找到数列中的一个数。 数据结构中的折半查找是怎么回事?谁能给个具体例子,谢谢了。 c++用折半法查找数组中元素,自己编了一下,但不知道哪里错了 做果冻可以不放果糖吗? C++:有15个数按又大到小顺序放在一个数组中,输入一个数,要求用折半法查找.......求每一步骤的解释. vb折半法查询,二分法 C语言折半法查找输入的数 关于C++折半法查找的问题 C语言中的“折半查找法”是什么? c语言如何用折半查找法查找并统计人数啊?急呀! C++折半查找的基本思想和步骤 C语言中用折半法查找 冰墩墩是什么材质? “冰墩墩”如此火爆,“冰墩墩”是如何诞生的?什么时候诞生的? 冰墩墩是怎么来? 梦见炕洞子着火,然后又用水浇灭 梦见炕洞里有鸡蛋? C语言编程,15个由大到小的数有序排列用折半法查找编程不知道这个程序哪儿错 了,求大神指导 海尔冰箱bcd—628wacw 的排水孔在哪里 20万左右的轿车排行榜推荐有哪些? 房间来了很多会飞的小虫子,怎么办? 在中国40万到50万买什么小汽车好? 现在买什么车最好,20W-50W之间的 急!房间来了只大蛤蟆,怎么办?? 50万左右买什么车好 50万左右汽车排行榜 求解!房间突然来了很多苍蝇。 http:&#47;&#47;baike.baidu.com&#47;view&#47;10671.htm#sub4999891 &lt;&lt;匆匆&gt;&gt;这篇课文的读后感。 20万左右买什么车最好? 梦见老公回家后,不和我同房 在晚上时房间里来了只老鼠怎么办? 酒店房间来了野猫怎么办? 为什么老是做梦梦到老公主动来和我同房我却不同意,但在现实中他并不喜 ... まさきMovin&#39;on!(青空下的约定)中文歌词 日文歌词在http:&#47;&#47;wenwen.soso.com&#47;z&#47;q175713725.htm?sp=1001 房间里来了一只黑蝴蝶,一个晚上你看到两次意味着什么? 30-50万的车,有哪些推荐? 20万预算,哪款车比较能撑面子? 房间来了一只大蟑螂我不敢睡觉,我很怕,现在手无寸铁,人人都在睡觉怎么办在线等急