/*
*线性查找,指定的数
*
*/
int array[] = {10,23,88,1,45,99,13};
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int index = -1; //保存找到数的下标
for(int i = 0; i <array.length ; i++){
if(array[i] == number){
index = i+1 ;
break;
}
if(index = -1){
System.out.print("你要查找的数不存在")
}else{
System.out.print("找到,你要找的数在数组中第" + index +"数")
}
}
/*
*线性查找,求数组最大、最小值
*/
int array[] = {10,23,88,1,45,99,13};
int max =array[0]; //最大值
int min =array[0]; //最小值
for(int i = 0; i <array.length ; i++){
if(array[i] >max){
max = array[i];
}
if((array[i] <min){
min = array[i]
}
System.out.print("最大值:" + max);
System.out.print("最小值:" + mix);
}
/*
*二分查找(针对有序的数组)
*
*/
int array[] = {10,23,88,99,131};
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int index = -1; //保存找到数的所在数组位置的下标,未找到等于-1;
int start = 0; //起始下标
int end = array.length-1; //最末下标
int middle;
while(){
//找到中间位置对应的元素值
middle =(start + end)/2;
if(number == array[midddle]){
index = middle +1;
break;
}
//假如大于中间的数
if(number > array[midddle]){
start = middle+1;
}
//假如小于中间的数
if(number < array[midddle]){
end = middle-1;
}
if(index == -1){
System.out.print("未找到你要找的数!!");
}else{
System.out.print("找到,你要找的数在数组中第" + index +"数");
}
}
/*
*排序,冒泡排序
*/
int array[] = {10,23,88,1,45,99,13};
//N个数比较的轮数为N-1次
for(int i = 0; i <array.length ; i++){
//每一轮比较的次数为N-1-i次
for(int j = 0; j <array.length-1-i ; j++){
//比较相邻两个数,小靠前;
if(array[j] >array [j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
//把排好序的数组输出
for(int i = 0; i <array.length ; i++){
System.out.print(array[i] + " ");
}
/*
*排序,选择排序
*/
int array[] = {10,23,88,1,45,99,13};
int min=0; //保存最小元素值的下标
//N个数比较的轮数为N-1次
for(int i = 0; i <array.length ; i++){
//每一轮比较的次数为N-1-i次
min = i;
//查找最小数在数组中的下标
for(int j = i+1; j<array.length ;j++){
if(array[min] > array[j]){
min = j;
}
//如果第i个最小数位置不在i上,则进行交换
if(i != min){
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
}
//把排好序的数组输出
for(int i = 0; i <array.length ; i++){
System.out.print(array[i] + " ");
}
/*
*排序,插入排序
*/
int array[] = {10,23,88,1,45,99,13};
for(int i = 0; i <array.length ; i++){
int temp = array[i];
//把下标保存下来
int j=i;
while(j>0 &&temp <array[j-1]){
array[j] = array[j-1];
j--;
}
array[j] = temp ;
}
//把排好序的数组输出
for(int i = 0; i <array.length ; i++){
System.out.print(array[i] + " ");
}
Java【查找和排序算法】
猜你喜欢
转载自blog.csdn.net/qq_40788793/article/details/84572044
今日推荐
周排行