Unity3d快速排序算法实现

作者: 好怕怕 | 来源:发表于2016-07-24 13:31 被阅读682次

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
快排百科释义

Unity实现快排代码

using UnityEngine;

/// <summary>
/// 快速排序
/// </summary>
public class QuickSortScript : MonoBehaviour
{
    //需要排序的数组
    private int[] array = new[] {3, 5, 6, 8, 9, 7, 4, 2, 0, 1};

    void Awake()
    {
        //调用快速排序
        QuickSort(array, 0, array.Length - 1);
        //循环输出
        foreach (var item in array)
        {
            Debug.Log(item);
        }
    }

    /// <summary>
    /// 快速排序
    /// </summary>
    /// <param name="array"> 要排序的数组 </param>
    /// <param name="start"> 数组的起始位置 </param>
    /// <param name="edn"> 数值的终止位置 </param>
    void QuickSort(int[] array, int start, int end)
    {
        //递归的出口(起始值大于或等于终止值的时候,不再执行,return)
        if (start >= end) return;

        //假设第一个元素作为我们的基准
        int pivot = array[start];

        //升序
        //定义两个指针指向我们数组的开头和结尾
        int left = start; //左边为开始
        int right = end; //右边为结束


        //ToDo
        //按照基准排序(小的数放左边,大的数放右边)
        //直到两个数相遇结束排序
        //如果左边小于右边
        while (left < right)
        {
            //从右往左搜索比pivot大的数值
            while (left < right && array[right] >= pivot)
            {
                right--;
            }
            //比pivot小的数值放左边
            array[left] = array[right];
            //从左往右搜索比pivot大的数值
            while (left < right && array[left] <= pivot)
            {
                left++;
            }
            //比pivot大的数值放右边
            array[right] = array[left];
        }
        //跳出循环的时候,left=right
        //左边都比pivot小,右边都比pivot大,将pivot放在下标当前位置
        array[left] = pivot;

        //递归
        QuickSort(array, start, left - 1);
        QuickSort(array, left + 1, end);
    }
}

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • 快速排序

    手写java版快速排序算法实现

  • 基础算法|快速排序

    快速排序(Quicksort),是对冒泡排序算法的一种改进。 快速排序算法通过多次比较和交换来实现排序,其排序流程...

  • 快速排序&快速排序与归并排序的对比

    快速排序算法 快速排序算法是从上到下解决问题使用递归实现,通过巧妙的方式,实现原地排序 分析时间复杂度O(nlog...

  • 数据结构02-高效排序算法

    第二章 高效排序算法 第二章 高效排序算法一、快速排序基本思想快速排序图示一次划分C 语言实现Java 语言实现算...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 排序算法

    常见排序算法比较 参考资料:各种排序算法比较 参考资料:快速排序算法 必须知道的八大种排序算法【java实现】(一...

网友评论

    本文标题:Unity3d快速排序算法实现

    本文链接:https://www.haomeiwen.com/subject/wpawjttx.html