快速排序:把集合的第一个元素进行标记(key),设定两个移动标记,分别向后/向前移动,把比key大的数据放在key右边,把比key小的数据放到key左边
重复执行此方法,到所有元素排序完成
过程:
1.j 向前移动,找到第一个小于 key 的元素 -> array[i] array[j]互换
2. i 向后运动,找到第一个大于key 的元素 ->array[i] array[j]元素互换
3.重复上面两个过程直到i=j 结束
时间复杂度:O(n*log2n) 稳定性:不稳定 空间复杂度:O(log2n)~O(n)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 快速排序
{
class Program
{
static void Main(string[] args)
{
int[] a = new int[5] { 1, 5, 7, 6, 3 };
Sort(a, 0, a.Length - 1);
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine("{0}", a[i])