`
umgsai
  • 浏览: 111914 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

快速排序&二分查找代码实现

 
阅读更多
/**
 *
 * @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++

    在C++中,快速排序和二分查找可以通过标准库函数实现,也可以自定义函数。给定代码示例中使用了自定义的`QuickSort`函数进行排序,以及在`main`函数中手动实现的二分查找逻辑。C++提供了丰富的数据结构和算法支持,...

    java冒泡排序、快速排序、二分查找

    Java 中的排序算法包括冒泡排序、快速排序等,而查找算法则有二分查找等。这些算法都是 Java 开发中非常重要的基础知识。本文将对冒泡排序、快速排序、二分查找进行详细的分析和图解。 冒泡排序 冒泡排序是一种...

    Java二分查找示例代码

    下面我们将深入探讨Java实现二分查找的具体步骤、示例代码以及其应用场景。 一、二分查找原理 二分查找的基本思想是将数组分为两半,然后比较中间元素与目标值的关系。如果中间元素等于目标值,则查找成功;如果...

    java二分查找实现

    Java 二分查找实现 ...* 算法设计:二分查找可以作为其他算法的组件,例如在快速排序中使用二分查找来确定分界点。 Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现技术简单,效率高,应用广泛。

    Objective C 二分查找(快速排序)

    在这个特定的案例中,我们关注的是使用Objective-C实现的两个核心算法:二分查找(Binary Search)和快速排序(Quick Sort)。下面我们将详细探讨这两个算法及其在Objective-C中的实现。 首先,快速排序是一种高效...

    数据结构查找、排序、二分查找、折半查找算法

    文件名中的"Sun数据结构第8章查找(第22-25讲).ppt"和"Sun数据结构第9章排序(第25-27讲).ppt"表明,内容可能详细涵盖了查找算法的各个方面,包括二分查找的原理、实现和优化,以及排序算法的介绍、实现步骤和性能...

    Java二分查找和快速排序的Applet程序

    本文将深入探讨Java中实现的两种经典算法:二分查找(Binary Search)和快速排序(Quick Sort),并通过一个名为"WorkDemo"的Applet程序来具体阐述它们的实现方式。 **二分查找**是一种在有序数组中查找特定元素的...

    二分查找和二叉排序树(C++实现)

    二分查找和二叉排序树是计算机科学中两种重要的数据结构和算法,它们在处理大量数据时具有高效性。下面将详细介绍这两种概念及其C++实现的关键点。 首先,二分查找是一种在有序数组中查找特定元素的搜索算法。其...

    C语言快速排序与二分查找算法示例

    本文将详细介绍C语言快速排序与二分查找算法的实现技巧,并提供了一个完整的示例代码。 一、快速排序算法 快速排序算法是一种 Divide and Conquer 的算法,它的主要思想是选择一个关键数据,然后将数组分成两个...

    二分查找算法

    - 在排序算法中,例如快速排序和归并排序,也会用到二分查找。 通过理解二分查找算法的工作原理,熟练掌握其C++实现,并结合实际应用场景,我们可以有效地提高程序的运行效率。对于学习计算机科学的学生和专业...

    C语言排序查找源代码

    例如,快速排序在大数据量下通常优于插入排序,而二分查找比顺序查找更快但需要有序数据。 在实际项目中,开发者会根据具体情况选择合适的排序和查找算法,以达到性能优化的目标。因此,熟悉这些基本算法及其C语言...

    排序和查找实现适配器模式

    ) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch (int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码...

    二分查找、快速排序、合并排序、Dijkstra、最短路径算法

    从给定的代码片段和描述中,我们可以提炼出关于二分查找、快速排序、合并排序以及Dijkstra最短路径算法的知识点。 ### 1. 二分查找(Binary Search) 二分查找是一种在有序数组中查找特定元素的高效算法。其工作原理...

    分治法应用(二分查找归并排序快速排序比赛日程安排)

    Java实现时,通常会用到递归或循环来执行二分查找。 2. **归并排序**(Merge Sort):归并排序是将大问题分解为两半,对每半分别进行排序,然后合并两个已排序的子序列。它的主要步骤包括分解、排序子序列和合并。...

    java 快速排序 折半查找的界面实现

    折半查找,也称为二分查找,适用于有序数组。它通过不断将查找范围减半来快速定位目标元素。首先,找到数组的中间元素,如果目标元素等于中间元素,则查找结束;如果目标元素小于中间元素,那么在左半部分继续查找;...

    java 二分查找法的实现方法

    二分查找法适用于已排序的数组或列表,如在大量数据中快速定位特定值,或者在数据库索引中查找数据等。但要注意,对于无序数据,二分查找法不适用,需要先进行排序。 5. **优化和变种**: - 对于含有重复元素的...

    C语言程序设计实现二分查找算法

    - **代码分析与解析**:在C语言中,二分查找的实现通常涉及`while`或`do-while`循环,以及条件判断语句。例如,初始化左指针`left`为0,右指针`right`为数组长度减1,然后在循环中计算中间索引`mid`,比较目标值与...

    C语言使用stdlib.h库函数的二分查找和快速排序的实现代码

    标题中提到的"C语言使用stdlib.h库函数的二分查找和快速排序的实现代码"涉及到两个基础算法:快速排序和二分查找,它们在数据结构与算法中占据着重要的地位。stdlib.h是C语言标准库中的一个头文件,提供了一些通用的...

Global site tag (gtag.js) - Google Analytics