/** * * @author shangyidong * @version $Id: BinarySearch.java, v 0.1 2019年05月12日 下午4:53 shangyidong Exp $ */ public class BinarySearchTest { public static void quickSort(int a[], int left, int right) { if (left >= right) { return; } int temp = a[left]; int i = left; int j = right; while (i != j) { while (i < j && a[j] >= temp) { j--; } if (i < j) { int t = a[j]; a[j] = a[i]; a[i] = t; } while (i < j && a[i] <= temp) { i++; } if (i < j) { int t = a[i]; a[i] = a[j]; a[j] = t; } } quickSort(a, left, j - 1); quickSort(a, i + 1, right); } public static int binarySearch(int a[], int key) { if (a == null) { return 0; } int left, right, mid; left = 0; right = a.length - 1; while (left <= right) { mid = (left + right) / 2; if (key > a[mid]) { left = mid + 1; continue; } if (key < a[mid]) { right = mid - 1; continue; } return mid; } return -1; } public static void main(String[] args) { int a[] = new int[10]; System.out.print("原始数组:"); for (int i = 0; i < 10; i++) { a[i] = new Random().nextInt(100); System.out.print(a[i] + " "); } System.out.println(); quickSort(a, 0, a.length - 1); System.out.print("排序后:"); for (int i = 0; i < 10; i++) { System.out.print(a[i] + " "); } System.out.println(); for (int i = 0; i < 10; i++) { int key = a[i]; System.out.print("查找key=" + key); System.out.println(",key下标" + binarySearch(a, key)); } } }
原始数组:82 0 19 20 23 42 56 15 34 52
排序后:0 15 19 20 23 34 42 52 56 82
查找key=0,key下标0
查找key=15,key下标1
查找key=19,key下标2
查找key=20,key下标3
查找key=23,key下标4
查找key=34,key下标5
查找key=42,key下标6
查找key=52,key下标7
查找key=56,key下标8
查找key=82,key下标9
相关推荐
在"BinarySearch"这个文件中,可能包含了C语言实现快速排序和二分查找的代码示例。这些代码可能包括了主函数、快速排序函数(如`quickSort`)和二分查找函数(如`binarySearch`)。通过阅读和理解这些代码,你可以更...
在C++中,快速排序和二分查找可以通过标准库函数实现,也可以自定义函数。给定代码示例中使用了自定义的`QuickSort`函数进行排序,以及在`main`函数中手动实现的二分查找逻辑。C++提供了丰富的数据结构和算法支持,...
Java 中的排序算法包括冒泡排序、快速排序等,而查找算法则有二分查找等。这些算法都是 Java 开发中非常重要的基础知识。本文将对冒泡排序、快速排序、二分查找进行详细的分析和图解。 冒泡排序 冒泡排序是一种...
下面我们将深入探讨Java实现二分查找的具体步骤、示例代码以及其应用场景。 一、二分查找原理 二分查找的基本思想是将数组分为两半,然后比较中间元素与目标值的关系。如果中间元素等于目标值,则查找成功;如果...
Java 二分查找实现 ...* 算法设计:二分查找可以作为其他算法的组件,例如在快速排序中使用二分查找来确定分界点。 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现技术简单,效率高,应用广泛。
在这个特定的案例中,我们关注的是使用Objective-C实现的两个核心算法:二分查找(Binary Search)和快速排序(Quick Sort)。下面我们将详细探讨这两个算法及其在Objective-C中的实现。 首先,快速排序是一种高效...
文件名中的"Sun数据结构第8章查找(第22-25讲).ppt"和"Sun数据结构第9章排序(第25-27讲).ppt"表明,内容可能详细涵盖了查找算法的各个方面,包括二分查找的原理、实现和优化,以及排序算法的介绍、实现步骤和性能...
本文将深入探讨Java中实现的两种经典算法:二分查找(Binary Search)和快速排序(Quick Sort),并通过一个名为"WorkDemo"的Applet程序来具体阐述它们的实现方式。 **二分查找**是一种在有序数组中查找特定元素的...
二分查找和二叉排序树是计算机科学中两种重要的数据结构和算法,它们在处理大量数据时具有高效性。下面将详细介绍这两种概念及其C++实现的关键点。 首先,二分查找是一种在有序数组中查找特定元素的搜索算法。其...
本文将详细介绍C语言快速排序与二分查找算法的实现技巧,并提供了一个完整的示例代码。 一、快速排序算法 快速排序算法是一种 Divide and Conquer 的算法,它的主要思想是选择一个关键数据,然后将数组分成两个...
- 在排序算法中,例如快速排序和归并排序,也会用到二分查找。 通过理解二分查找算法的工作原理,熟练掌握其C++实现,并结合实际应用场景,我们可以有效地提高程序的运行效率。对于学习计算机科学的学生和专业...
例如,快速排序在大数据量下通常优于插入排序,而二分查找比顺序查找更快但需要有序数据。 在实际项目中,开发者会根据具体情况选择合适的排序和查找算法,以达到性能优化的目标。因此,熟悉这些基本算法及其C语言...
) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch (int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码...
从给定的代码片段和描述中,我们可以提炼出关于二分查找、快速排序、合并排序以及Dijkstra最短路径算法的知识点。 ### 1. 二分查找(Binary Search) 二分查找是一种在有序数组中查找特定元素的高效算法。其工作原理...
Java实现时,通常会用到递归或循环来执行二分查找。 2. **归并排序**(Merge Sort):归并排序是将大问题分解为两半,对每半分别进行排序,然后合并两个已排序的子序列。它的主要步骤包括分解、排序子序列和合并。...
折半查找,也称为二分查找,适用于有序数组。它通过不断将查找范围减半来快速定位目标元素。首先,找到数组的中间元素,如果目标元素等于中间元素,则查找结束;如果目标元素小于中间元素,那么在左半部分继续查找;...
二分查找法适用于已排序的数组或列表,如在大量数据中快速定位特定值,或者在数据库索引中查找数据等。但要注意,对于无序数据,二分查找法不适用,需要先进行排序。 5. **优化和变种**: - 对于含有重复元素的...
- **代码分析与解析**:在C语言中,二分查找的实现通常涉及`while`或`do-while`循环,以及条件判断语句。例如,初始化左指针`left`为0,右指针`right`为数组长度减1,然后在循环中计算中间索引`mid`,比较目标值与...
标题中提到的"C语言使用stdlib.h库函数的二分查找和快速排序的实现代码"涉及到两个基础算法:快速排序和二分查找,它们在数据结构与算法中占据着重要的地位。stdlib.h是C语言标准库中的一个头文件,提供了一些通用的...