Unity中的快速排序算法&&二分查找

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中的快速排序算法&&二分查找相关的知识,希望对你有一定的参考价值。

参考技术A

介绍:
  快速排序是由 东尼·霍尔 所发展的一种 排序算法 。在平均状况下,排序 n 个项目要 Ο ( n log n )次比较。在最坏状况下则需要 Ο ( n 2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο ( n log n ) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。
步骤:
从数列中挑出一个元素,称为 "基准"(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为 分区(partition) 操作。
递归 地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

2、演示的结果图如下

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其 缺点 是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置 记录 将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的 记录 ,使查找成功,或直到子表不存在为止,此时查找不成功。简单的来说利用的原理就是我们中学所学的二分查找,空间复杂度为O(n),时间复杂度为O(log(n))。

注意使用二分查找的数组必须是排序好的数组。

Java中的快速排序算法

public    static void quicksort(int[] array,int low,int high)
    {
        if(low > high)
        {
            return;
        }
        int  i=low;
        int  j=high;
        int temp = array[low];//temp就是基准位
        while(i<j)
        {
            while(temp <= array[j] && i<j)//先看右边,依次往左递减
            {
                j--;
            }
            while(temp >= array[i] && i<j)//再看左边,依次往右递加
            {
                i++;
            }
            if(i < j )//满足条件则交换
            {
                int t = array[i];
                array[i] = array[j];
                array[j] = t;
            }
        }
        //最后将基准位与i和j相等位置的数字交换
        array[low] = array[i];
        array[i] = temp;
        //递归调用左半数组
        quicksort(array,low,j-1);
        //递归调用右半数组
        quicksort(array,j+1,high);
        
    }
    
    public static void main(String[] args) {
        int[] array = {49, 38, 65, 97, 76, 13, 27, 50 };
        System.out.println("排序前的数组:"+Arrays.toString(array));
        quicksort(array,0,array.length-1);
        System.out.println();
        System.out.println("排序后的数组:"+Arrays.toString(array));
    }

 

以上是关于Unity中的快速排序算法&&二分查找的主要内容,如果未能解决你的问题,请参考以下文章

《算法图解》之快速排序

快速排序函数及二分法匹配

[BZOJ] 4552: [Tjoi2016&Heoi2016]排序 #二分+线段树+算法设计策略

有序数组排序

算法系列01:快速排序&&归并排序

分治算法 ------二分归并排序