帮我把这个快速排序的程序改简洁点. 谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:08:34
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>

int a[] = {100,2,5,6,7,9,13,45,55};

template<class T>
void display(T *a, int n)
{
for (int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}

template<class T>
void swap(T *a, T *b)
{
T tmp = *a;
*a = *b;
*b = tmp;
}

template<class T>
void quickSort(T *p_s, T *p_e)
{
if ( p_s == p_e ) return;
T *p_s_tmp , *p_e_tmp;
p_s_tmp = p_s;
p_e_tmp = p_e;
int *p_m;
int d = (p_e-p_s)/2;
p_m = p_s +d;
int pivot = *p_m;

while ( p_s < p_e )
{
while ( pivot < *p_e )
p_e--;

while ( *p_s < pivot )
p_s++;

swap( p_e,p_s );
display<int>(a, 9);
}

p_m = p_e

如果只是排序的话根本不用这么复杂
void main()
{
int a[] = {100,2,5,6,7,9,13,45,55};
int i,j;
int t;
for(i=0;i<8;i++){
for(j=i+1;j<=8;j++){
if(a[j]<a[i]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

for(i=0;i<=8;i++){
printf("%4d",a[i]);
}
}

你的程序我看不懂诶。这是简单的选择排序可以试试看。