//
// main.cpp
// Sorting
//
// Created by yanzhengqing on 12-12-6.
// Copyright (c) 2012年 yanzhengqing. All rights reserved.
#include <iostream>
using namespace std;
int input_array(intconst *p)
{
printf("please input the array numbers......\n");
for (uint i =0; i <10;i++)
{
scanf("%d",p++);
}
return0;
}
int output_array(intconst *p)
{
for (uint i =0; i <10;i++)
{
printf("%d\t",*(p++) );
}
return0;
}
/**********************************************************************************************/
//快速排序
//数据范例
//21 32 43 22 56 87 65 49 76 10
//第一趟 102143 22 56 876549 76 32
int Quicksort_swap(int *pleft ,int *pright)
{
int temp =0;
temp = *pleft;
*pleft = *pright;
*pright = temp;
return0;
}
int Quick_sort(int *a,int begin ,int end)
{
int compare = a[begin],left = begin,right = end;
if (left >= right)
{
return0;
}
while (left < right)//此下循环为一趟排序,每一趟排序总有一个元素在最终确定位置
{
while((left < right) && a[right] >= compare)
{
right --;
}
swap(a[left],a[right]);
while ((left < right) && (a[left] < compare))
{
left ++;
}
swap(a[right],a[left]);
}
//这里主要用到了栈,分别对数组进行递归排序,稍微理解一下想想即可。
Quick_sort(a,begin,right-1);
Quick_sort(a,right+1,end);
return0;
}
int main(int argc,constchar * argv[])
{
int array[10] = {0};
input_array(array);
Quick_sort(array,0,((sizeof(array)/sizeof(int))-1));
output_array(array)
return0;
}
/***************************************************************************************/
示例:
输入
21
32
43
22
56
87
65
49
76
10
输出
102122 32 43 495665 76 87