/** * * @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
相关推荐
题目:首先产生随机数,再进行快速排序,再进行二分查找。 实现代码: #include #include #include void quiksort(int a[],int low,int high) { int i = low; int j = high; int temp = a[i]; if( low ...
) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch (int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码...
二分搜索算法、快速排序,算法分析与设计(完整的代码,结合例题详细解析) 全套资源,求抱走!!! 1、给定数组a[0 : 8]={1, 8, 12, 15, 16, 21, 30, 35, 39}。采用二分搜索算法完成下述任务: 1)查找是否有元素30...
c语言实现的快速排序算法,及其一步步优化代码(1. 数组长度较小时候选择插入排序;2. 主元在数组最左最右,中间三个数字中间选择中间大小的, 数组拆分后将 重复数字挪到主元附近,不进行重复partition)
以下是对C语言使用stdlib.h库函数的二分查找和快速排序的实现代码进行了详细的介绍,需要的朋友可以过来参考下。希望对大家有所帮助
二分查找(非递归) <*******\n"); printf("\t***********> 3.二分查找(递归) <*******\n"); printf("\t***********> 4,直接插入排序 <*******\n"); printf("\t***********> 5.直接选择排序 <*******\n"); ...
* 实现一个有序数组的二分查找算法* 实现模糊二分查找算法(比如大于等于给定值的第一个元素) ## 散列表* 实现一个基于链表法解决冲突问题的散列表* 实现一个LRU缓存淘汰算法 ## 字符串 ## 二叉树 ## 堆 ## 图 ##...
代码包括顺序、二分、哈希查找、以及选择、直接、冒泡、快速排序
二分查找法(Binary Search) 二分搜索树基础 二分搜索树的节点插入 二分搜索树的查找 二分搜索树的遍历(深度优先遍历) 层序遍历(广度优先遍历) 删除最大值, 最小值 二分搜索树节点的删除 floor和ceil的实现 并查集 ...
思想简单,细节颇多;本以为很简单的两个小程序,写起来发现bug频出,留此纪念。 #usr/bin/env python def binary_search(lst,t): low=0 height=len(lst)-1 quicksort(lst,0,height) print lst ...
课程设计教程包含了10个数据结构相关的实例,涵盖了二叉树的建立和遍历、冒泡排序、快速排序等内容。以下是每个实例的简介: ...10. 查找.c:介绍了常见的查找算法,包括顺序查找、二分查找和哈希查找
算法图解的源代码,包含各种不同语言的算法实现方法,具体算法包括:二分查找的方式和实现、选择排序实现、递归实现、快速排序实现、散列表实现、广度优先搜索实现、最短路径算法实现、贪婪算法解析、动态规划等一...
包含Bit-map、堆排序、二分查找、哈希表、快速排序等算法的原理及其C实现代码
对于如二分查找等算法,要求输入是有序的序列,也就是要先排序后查找,由此可见排序算法的重要性. 广为人知的排序算法有冒泡排序,还有选择排序,插入排序.高级一些的有快速排序,希尔排序,堆排序,归并排序,基数排序等. ...
二分查找 哈希查找 直接插入排序 折半插入排序 希尔(shell)排序 冒泡排序 快速排序 简单选择排序 堆排序 归并排序(非递归算法) 基数排序 实现图的存储结构 图的深度遍历 图的广度遍历 二叉排序树的...
20_二分查找 21_冒泡排序和选择排序 22_插入排序 23_希尔排序 24_归并排序 25_快速排序 26_Hash散列&ADT Map 27_树的嵌套列表实现 28_树结构的节点链接法实现 29_表达式解析树 30_树的遍历 31_python实现ADT ...
排序算法排序排序算法的稳定性冒泡排序冒泡排序的分析代码体现冒泡排序的...快速排序代码体现时间复杂度归并排序归并算法的分析归并算法的代码体现归并排序的时间复杂度二分查找二分查找程序分析二分查找代码时间复杂度...
常用算法代码及演示。顺序查找,二分查找,哈希表,选择法排序,冒泡发排序,插入发排序,希尔排序,快速排序。