快速排序(源代码篇)

/****************************************************************************************
   算法:
         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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值