快速排序法(不稳定的排序算法)
源代码:
#include<stdio.h>
#include<stdlib.h>
void Print(int a[],int n){
int i;
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
}
void swap(int a[],int i,int j){
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
void quicksort(int a[],int left,int right){
int i,j,x;
i=left;
j=right;
x=a[left];
if(left<right){
while(i<j){
while(i<j&&a[--j]>=x);
while(i<j&&a[++i]<=x);
swap(a,i,j);
}
swap(a,left,i);
quicksort(a,left,i);
quicksort(a,i+1,right);
Print(a,10);
}
}
int main(void){
int i;
int a[10];
printf("Please input data:");
for(i=0;i<10;i++){
scanf("%d",a+i);
}
quicksort(a,0,10);
return 0;
}
源代码:
#include<stdio.h>
#include<stdlib.h>
void Print(int a[],int n){
int i;
for(i=0;i<n;i++){
printf("%4d",a[i]);
}
printf("\n");
}
void swap(int a[],int i,int j){
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
void quicksort(int a[],int left,int right){
int i,j,x;
i=left;
j=right;
x=a[left];
if(left<right){
while(i<j){
while(i<j&&a[--j]>=x);
while(i<j&&a[++i]<=x);
swap(a,i,j);
}
swap(a,left,i);
quicksort(a,left,i);
quicksort(a,i+1,right);
Print(a,10);
}
}
int main(void){
int i;
int a[10];
printf("Please input data:");
for(i=0;i<10;i++){
scanf("%d",a+i);
}
quicksort(a,0,10);
return 0;
}