static final int N=15;
static void quickSort(int[] arr,int left,int right) //快速排序算法
{
int f,t;
int rtemp,ltemp;
ltemp=left;
rtemp=right;
f=arr[(left+right)/2]; //确定分界值
while(ltemp<rtemp){
while(arr[ltemp]<f) ++ltemp;
while(arr[rtemp]>f) --rtemp;
if(ltemp<=rtemp){ //冒泡置换
t=arr[ltemp];
arr[ltemp]=arr[rtemp];
arr[rtemp]=t;
--rtemp;
++ltemp;
}
}
if(ltemp==rtemp) ltemp++;
if(left<rtemp) quickSort(arr,left,ltemp-1); //递归调用
if(ltemp<right) quickSort(arr,rtemp+1,right); //递归调用
}
static int searchFun(int a[],int n,int x){ //折半查找
int mid,low,high;
low=0;
high=n-1;
while(low<=high){
mid=(low+high)/2;
if(a[mid]==x)
return mid; //找到
else if(a[mid]>x)
high=mid-1;
else
low=mid+1;
}
return -1; //未找到
}
public static void main(String[] args) {
int[] shuzu=new int[N];
int x,n,i;
for(i=0;i<N;i++){
shuzu[i]=(int)(100+Math.random()*(100+1));; //产生数组
}
System.out.print("折半查找算法演示!\n");
System.out.print("排序前数据序列:\n");
for(i=0;i<N;i++)
{
System.out.print(" "+shuzu[i]); //输出序列
}
System.out.print("\n\n");
quickSort(shuzu,0,N-1); //排序
System.out.print("排序后数据序列:\n");
for(i=0;i<N;i++)
{
System.out.print(" "+shuzu[i]); //输出序列
}
System.out.print("\n\n");
System.out.print("输入要查找的数:");
Scanner input=new Scanner(System.in);
x=input.nextInt(); //输入要查找的数
n=searchFun(shuzu,N,x); //查找
if(n<0) //输出查找结果
System.out.println("没找到数据:"+x);
else
System.out.println("数据:"+x+" 位于数组的第"+(n+1)+" 个元素处。");
}
分享到:
相关推荐
二分查找排序算法是一种高效的排序方法,它是基于二分查找思想和插入排序的结合体。在计算机科学中,排序算法是处理数据集合的一种基础方法,它使得数据按照特定的顺序排列,例如升序或降序。二分查找排序算法特别...
二分查找(Binary Search)是计算机科学中一种高效的数据检索方法,适用于已排序的数组或列表。它的基本思想是将目标值与数组中间元素进行比较,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在...
本文将详细介绍五种经典的排序算法:直接插入排序、冒泡排序、选择排序和快速排序,以及一种查找算法——二分查找,并提供Java语言的实现。 一、直接插入排序 直接插入排序是一种简单直观的排序算法。它的工作原理...
C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...
在Java编程中,文件读取、数组操作、选择排序以及二分查找是常见的编程任务,它们涉及了IO流、数据结构和算法等多个方面。以下是这些知识点的详细解释: 1. **文件读取**:Java提供了丰富的IO流类库用于读取文件。...
结合快速排序和二分查找,可以先使用快速排序将数组排序,然后在需要查找元素时使用二分查找,这样可以大大提高查找效率,因为快速排序后的数组是有序的,适合二分查找。 在"BinarySearch"这个文件中,可能包含了...
二分查找排序法,作为一种高效的查找算法,在软件开发和算法设计中占有举足轻重的地位。它不仅能够快速定位数据,还能对数据集进行排序,使得数据的检索更为高效。随着数据量的增加,算法的性能成为研究者关注的焦点...
【快速排序】是一种高效的排序算法...快速排序尤其适用于大数据量的排序,而二分查找则适合在已排序的数据中查找特定元素。在这个Java程序中,这两个算法被巧妙地结合在一起,提供了一个完整的银行客户信息管理的示例。
二分查找算法与冒泡排序算法是计算机科学中两种基础且重要的算法,它们在数据处理和数组操作中扮演着至关重要的角色。 首先,我们来详细探讨递归二分查找算法。二分查找,也称为折半查找,是一种在有序数组中查找...
本话题主要关注C语言实现的二分查找和排序算法,这两种算法在计算机科学中有着重要的应用。 **二分查找** 是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两个部分,每次比较中间元素与目标值...
在这个主题中,我们主要关注查找和排序算法,特别是二分查找(折半查找)算法。这些算法在实际编程中具有广泛应用,包括数据库索引、搜索引擎优化和各种计算问题的解决。 首先,我们来看查找算法。查找是数据结构中...
但二分查找的前提条件是数据必须已经排序,如果数据未排序,需要先进行排序,这会增加额外的时间成本。 以下是二分查找的基本步骤: 1. 确定数组的中间索引,即 `mid = (left + right) / 2`。 2. 如果中间元素等于...
不同之处在于,归并排序不使用二分查找,而是将数组分为两半,然后对每一半进行排序,再合并。归并排序在MATLAB中实现时,也需要递归地将数组划分为更小的部分,直到每个部分仅包含一个元素,然后逐步合并这些元素,...
自己写的java选择排序,冒泡排序代码,二分查找,还有500个小孩手拉手数三退一问题,供初学者参考一下
如果数据未排序,那么在使用二分查找之前,必须先进行排序,这会增加额外的时间成本。排序算法如快速排序、归并排序等虽然平均时间复杂度也为 O(n log n),但实际执行效率还受到数据分布情况和选择排序算法的影响。...
在实验报告的程序源代码中,可以看到包含了主函数和各个功能函数的实现,如`S_Search`(顺序查找)、`Binary_Search`(二分查找)、`D_Insertsort`(直接插入排序)、`Select_Sort`(直接选择排序)和`Bubble_Sort`...
Java 中的排序算法包括冒泡排序、快速排序等,而查找算法则有二分查找等。这些算法都是 Java 开发中非常重要的基础知识。本文将对冒泡排序、快速排序、二分查找进行详细的分析和图解。 冒泡排序 冒泡排序是一种...
二分查找和二叉排序树是计算机科学中两种重要的数据结构和算法,它们在处理大量数据时具有高效性。下面将详细介绍这两种概念及其C++实现的关键点。 首先,二分查找是一种在有序数组中查找特定元素的搜索算法。其...
它结合了二分查找的效率与插入排序的稳定性。在这个“易语言源码二分插入排序.rar”压缩包中,我们可以找到一个用易语言实现的二分插入排序的代码示例。 易语言是一种中国本土开发的、面向对象的编程语言,其设计...
在这个特定的案例中,我们关注的是使用Objective-C实现的两个核心算法:二分查找(Binary Search)和快速排序(Quick Sort)。下面我们将详细探讨这两个算法及其在Objective-C中的实现。 首先,快速排序是一种高效...