标签:
时间限制:1.0s 内存限制:512.0MB
问题描述:给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式:第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式:输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> int *getinfo(int n); void insert(int n); void show(int); void bubblesort(int n); void QuickSort(int num[],int n); int *num=NULL; int main() { int n,i; scanf("%d",&n); num=getinfo(n); for(i=0;i<n;i++) { scanf("%d",&num[i]); } //insert(n);//插入排序 //bubblesort(n); QuickSort(num,n);//快速排序 show(n); free(num); return 0; } void insert(int n)//插入排序 { int i,j,temp; for(i=1;i<n;i++) { temp=num[i]; j=i; while(j>0&&temp<num[j-1]) { num[j]=num[j-1]; j--; } num[j]=temp; } } void bubblesort(int n)//冒泡排序 { int i,j,temp; for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(num[j+1]<num[j]) { temp=num[j+1]; num[j+1]=num[j]; num[j]=temp; } } } } void QuickSort(int num[],int n)//快速排序法 { int i=0,j=n-1; int val=num[0]; if(n>1) { while(i<j) { for(;j>i;j--) if(num[j]<val) { num[i++]=num[j]; break; } for(;i<j;i++) if(num[i]>val) { num[j--]=num[i]; break; } } num[i]=val; QuickSort(num,i); //递归思想 QuickSort(num+i+1,n-i-1); } } int *getinfo(int n) { int *p=NULL; p=(int *)malloc(sizeof(int)*n); if(NULL==p) { exit(0); } return p; } void show(int n) { int i; for(i=0;i<n;i++) { printf("%d ",num[i]); } }
(全文完)
标签:
原文地址:http://blog.csdn.net/confidence_surmount/article/details/45064943