首页 > 其他 > 详细

快速排序(源代码篇)

时间:2014-04-16 15:54:38      阅读:436      评论:0      收藏:0      [点我收藏+]
/****************************************************************************************
   算法:
         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;
}

快速排序(源代码篇),布布扣,bubuko.com

快速排序(源代码篇)

原文:http://blog.csdn.net/li_jun_09_05/article/details/23717503

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!