大多数程序员在写排序算法的时候,都会采用冒泡算法,为什么了?因为这个算法最简单,最容易理解,也最容易写。
但是,冒泡算法效率并不高,今天就写一个c#的快速排序算法。
废话不多说,先直接上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QuickSortDemo
{
class QuickSort
{
public void Sort(int[] arr)
{
sortMethd(arr, 0, arr.Length - 1);
}
private void sortMethd(int[] arr, int left, int right)
{
if (left < right)
{
int key = arr[(left + right) / 2];
int i = left-1 ;
int j = right + 1;
while (true)
{
/*
这里是关键的地方 *
*/
while (arr[++i] < key ) ;
while (arr[--j] > key ) ;
if (i >= j)
{
break;
}
swap(arr, i, j);
}
sortMethd(arr, left, i - 1);
sortMethd(arr, j+1 , right);
}
}
private void swap(int[] arr, int i, int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}