/****************************************************************************************
算法:
1、先以数组的第一个数据作为参考,然后从右边开始--逐个比较。
2、如果比较之后不符合排序,那么交换它们2个的数据,然后此时右边的数据成为参考。
3、从左边开始--逐个比较,如果比较之后不符合排序,交换它们2个的数据,然后左边的数据成为参考。
4、采用递归思想不断循环直至排序完成。
****************************************************************************************/
#include <iostream>
using namespace std;
void Swap(int *elem_1, int *elem_2)
{
int temp = *elem_1;
*elem_1 = *elem_2;
*elem_2 = temp;
}
void Quick_Sort(int *array,int start_index,int end_index)
{
int front_index = start_index;
int rear_index = end_index;
while(front_index < rear_index)
{
for(;array[front_index] <= array[rear_index] && front_index < rear_index;)
rear_index--;
if(front_index < rear_index)
Swap(array+front_index,array+rear_index);
for(;array[front_index] < array[rear_index] && front_index < rear_index;)
front_index++;
if(front_index < rear_index)
Swap(array+front_index,array+rear_index);
}
if( front_index - start_index > 0)
Quick_Sort(array,0,front_index - 1);
if( end_index - rear_index > 0)
Quick_Sort(array,rear_index + 1,end_index);
}
int main(void)
{
int array[10]={4,9,7,0,3,1,5,8,2,6};
Quick_Sort(array,0,9);
for(int i=0; i<10; i++)
cout<<array[i]<<" ";
cout<<endl;
return 0;
}
快速排序(源代码篇)
最新推荐文章于 2022-12-15 19:20:22 发布