1、快速排序:
(1)基本思想:通过一趟排序将要排序的数据分割成独立的两个部分,一部分的所有数据都比另一部分所有的数据都要小,然后按照此方法对这两部分的数据分别进行快速排序,整个排序的过程可以递归进行,以此将整个数据变成有序的序列。
a,先从数列中取出一个数作为基准数。
b,分区过程中,将比这个数大的数全放在它的右边,小于或者等于它的数放在它的左边。
c,再对左右区间重复第二步,直到各个区间只有一个数。
(2)过程:
(3)代码实现:
void
QuickSort(
int
*
numbers
,
int
start
,
int
last
)
{
if
(
start
<
last
)
{
int
i =
start
;
int
j =
last
;
int
temp =
numbers
[
start
];
while
( i < j )
{
while
( i < j &&
numbers
[j] >= temp )
{
j--;
}
if
( i < j )
{
numbers
[i++] =
numbers
[j];
}
while
( i < j &&
numbers
[i] < temp )
{
i++;
}
if
( i < j )
{
numbers
[j--] =
numbers
[i];
}
}
numbers
[i] = temp;
QuickSort(
numbers
,
start
,i - 1 );
QuickSort(
numbers
,i+1,
last
);
}
}
void
Show(
int
*
arr
,
int
len
)
{
for
(
int
i = 0 ; i <
len
;i ++ )
{
cout<<
arr
[i]<<
" "
;
}
cout<<endl;
}
int
main()
{
int
arr[] = { 14,11,34,56,78,89,3,40,67,99};
int
len =
sizeof
(arr)/
sizeof
(arr[0]);
Show( arr,len );
QuickSort(arr,0,len-1);
Show(arr,len);
return
0;
}