题目 1714: 数据结构-直接插入排序
#include<stdio.h>
int cmp_int(const void* _a,const void* _b)
{
int* a=(int*)_a; //强制类型转换
int* b=(int*)_b;
return *a - *b; //从小到大进行排序,升序,如果是降序,则修改为*b - *a;
}
int main()
{
int i,n,a[1001];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
qsort(a,n,sizeof(a[0]),cmp_int);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
上面采用是快速排序qsort()函数进行排序,下面可以采用冒泡法进行排序,函数如下:
#include<stdio.h>
int main()
{
int i,n,a[1001];
int j,k,temp;
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
//第二种方法,采用冒泡排序法
for(j=1;j<i;j++)
{
for(k=0;k<i-j;k++)//从第一个数开始,一直到倒数第二个数,比较大小
//然后是第一个数开始,一直到倒数第三个数,比较大小,依次
{
if(a[k+1]<a[k])
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
排序问题主要采用以上两种方法较为方便.