`
qq125922714
  • 浏览: 37279 次
社区版块
存档分类
最新评论

以一个枢纽值二分一个数组

阅读更多

    划分算法由两个指针开始,分别指向数组的两头。在左边的指针向右移动,右边的指针向左移动。左边的指针leftPtr初始化为第一个数据项,右边的指针rightPtr初始化为数组的最后一项。算法如下:

?


import java.util.Random;

public class Partition {
    private long[] theArr;
    private int nElems;

    public Partition(int max) {
        theArr = new long[max];
        nElems = 0;
    }

    public void insert(long value) {
        theArr[nElems++] = value;
    }

    public int size() {
        return nElems;
    }

    public void display() {
        System.out.print("A = ");
        for (int j = 0; j < nElems; j++) {
            System.out.print(theArr[j] + " ");
        }
        System.out.println();
    }

    public int partitionIt(int left, int right, long pivot) {
        int leftPtr = left - 1;
        int rightPtr = right + 1;
        while (true) {
            // keep moving to right until current value is larger than pivot
            while (leftPtr < right &amp;&amp; theArr[++leftPtr] < pivot) {
                //
            }

            // keep moving to left until current value is smaller than pivot
            while (rightPtr > left &amp;&amp; theArr[--rightPtr] > pivot) {
                //
            }

            // if left pointer meet the right pointer, break
            if (leftPtr >= rightPtr) {
                break;
            } else {
                swap(leftPtr, rightPtr);
            }
        }

        // return pivot position
        return leftPtr;
    }

    public void swap(int dex1, int dex2) {
        long temp = theArr[dex1];
        theArr[dex1] = theArr[dex2];
        theArr[dex2] = temp;
    }
}

?

end.

 
0
0
分享到:
评论

相关推荐

    折半查找(二分查找).md

    **折半查找**,又称**二分查找**,是一种在**有序数组**中查找某一特定元素的搜索算法。该方法的基本思想是:首先将待查元素与数组中间位置的元素进行比较,如果相等则搜索过程结束;如果待查元素较小,则继续在数组...

    算法设计策略 - 05-2 分治法.pdf

    在分治法的应用中,二分搜索算法是一个典型例子。在二分搜索中,数据被分成两半进行处理,这有效地减少了搜索的范围,因此可以快速定位目标值。此外,归并排序和快速排序也是应用分治法的典型排序算法,它们都利用了...

    数据结构-各种排序算法.pptx

    快速排序是交换类排序中最为高效的算法,它通过一个枢纽元素将待排序序列分为两部分,一边的元素都不大于枢纽,另一边的元素都不小于枢纽,然后递归地在两部分上继续进行快速排序。快速排序的平均时间复杂度为O...

    数据结构课设简易城市交通咨询系统

    在实现这个交通咨询系统的过程中,作者可能还涉及了排序算法(如快速排序、归并排序)、搜索算法(如二分查找)、图的遍历算法(如DFS、BFS)等。此外,对于性能优化,可能还需要考虑数据结构的复杂度分析,以确保...

    数据结构课设,航空客运订票系统.zip

    例如,排序算法(快速排序、归并排序等)用于优化座位分配,查找算法(二分查找、哈希查找等)加速航班和乘客信息的检索,贪心算法或动态规划可能用于优化飞行路线或航班调度。 总之,数据结构和算法的合理运用能极...

    javalruleetcode-dsal:数据结构与算法个人整理

    查找第一次后最后一次出现位置、查找大于小于给定值最近的位置、带偏移的位置 基础数据结构 常见的数据结构实现 基本的线性结构: : 数组 : 链表 : 队列 基于链表实现队列、基于循环数组实现队列 : 栈 : 堆 : ...

    jiaotongzixun.zip

    - 查找算法:二分查找、哈希表查找等,用于快速定位特定交通信息,如查询某个公交站的路线信息。 - 排序算法:快速排序、归并排序等,用于整理和展示交通信息,如按照时间顺序排列公交班次。 - 图算法:Dijkstra...

Global site tag (gtag.js) - Google Analytics