int[] arr = { 1, 7, 6, 5, 11, 8, 9, 3 };
void Start ()
{
Quicksort(arr,0,arr.Length-1);
for (int i = 0; i < arr.Length; i++)
{
if (i == arr.Length - 1)
{
print(arr);
break;
}
print(arr);
}
}
//快速排序
public static void Quicksort(int[] a, int low, int high)
{
if (low >= high)
{
return;
}
int first = low, last = high;
//此时a[low]被保存到key,所以元素a[low]可以当作是一个空位,用于保存数据,之后每赋值一次,也会有一个位置空出来,
//直到last ==first,此时a[last]==a[first]=key
int key = a[low];
while (first < last)
{
while (first < last && a[last] >= key)
{
last--;
}
a[first] = a[last];
while (first < last && a[first] <= key)
{
first++;
}
a[last] = a[first];
}
a[first] = key;
//递归排序数组左边的元素
Quicksort(a, low, first - 1);
//递归排序右边的元素
Quicksort(a, first + 1, high);
}