#include <stdioh>
#include <stdlibh>
int cmp(const void a,const void b)
{
return (int )a-(int )b;
}
int main(int argc,char argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
如果要自己实现排序函数的话
#include <stdioh>void qsort(int a,int left,int right)
{
int p=(left+right)/2; //以中间数作为主元
int k=a[p];
int i=left,j=right;
while(i < j)
{
//从左边开始将大于主元的数放在主元右边
while((i <= p) && (a[i] <= k))
++i;
if(i < p)
{
a[p]=a[i];
p=i;
}
//从右边开始将小于主元的数放在左边
while((j >= p) && (a[j] >= k))
--j;
if(j > p)
{
a[p]=a[j];
p=j;
}
}
a[p]=k;
//如果左边的数大于1个则递归左边
if(p-left > 1)
qsort(a,left,p-1);
//如果右边的数大于1个则递归右边
if(right-p > 1)
qsort(a,p+1,right);
}
int main(int argc,char argv)
{
int a[]={1,-2,53,49,144,65,267,98,112};
int i;
qsort(a,0,sizeof(a)/sizeof(int)-1);
for(i=0;i < sizeof(a)/sizeof(int);++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
#include <stdioh>
int main()
{int i,j,min,temp,a[11];
printf("enter data:\n");
for (i=1;i<=10;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
printf("The orginal numbers:\n");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for (i=1;i<=9;i++)
{min=i;
for (j=i+1;j<=10;j++)
if (a[min]>a[j]) min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("\nThe sorted numbers:\n");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
扩展资料:
scanf()用法:int scanf(charformat,[argument,]);
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘)读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
其调用格式为:scanf(“<格式化字符串>”,<地址表>);
scanf()函数返回成功赋值的数据项数,出错时则返回EOF;
其控制串由三类字符构成:
1、格式化说明符
2、空白符
3、非空白符
格式化说明符
附加格式说明字符表:
空白字符
空白字符会使scanf()函数在读 *** 作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。
非空白字符
一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
#include<stdioh>
#include<stdlibh>
#include<malloch>
#define LIST_INIT_SIZE 1000
typedef struct
{
int key;
}type;/重命名/
typedef struct
{
type r;
int length;
int listsize;
}sqlist;/定义链表/
void InitList_Sq(sqlist &L) ;
void binaryinsert(sqlist &l);
void insertsort(sqlist &L);
void main()
{
int a[LIST_INIT_SIZE];
int n;
int i;
sqlist l;/定义链表/
sqlist L;/定义链表/
printf("PLEASE INPUT N\n");
scanf("%d",&n);/输入n的值/
InitList_Sq(l);/初始化链表/
InitList_Sq(L);/初始化链表/
srand(time(NULL));/随机数播种/
for(i=1;i<=n;i++)
{/链表l,L的个元素随机数赋值/
a[i]=1+(int)(rand()%(2n));
lr[i]key= a[i];
llength++;
Lr[i]key=lr[i]key;
Llength++;
}
insertsort(l);/调用简单插入排序函数函数/
binaryinsert(L);/调用第二种算法二分插入排序的函数/
printf("\nAFTER binaryinsert the number is\n");
for(i=1;i<Llength;i++)
printf(" %d",Lr[i]);
}
void insertsort(sqlist &L)
{
int i;
int j;
for(i=2;i<Llength;i++)
if(Lr[i]key<Lr[i-1]key)
{
Lr[0]=Lr[i];/复制哨兵/
Lr[i]=Lr[i-1];
for(j=i-2;Lr[0]key<Lr[j]key;j--)
Lr[j+1]=Lr[j];/记录后移/
Lr[j+1]=Lr[0];/插入记录/
}
}
void binaryinsert(sqlist &l)
{
int i;
int high;
int low;
int j;
int m;
for(i=2;i<llength;i++)
{
lr[0]=lr[i];
low=1;
high=i-1;
while(low<=high)
{
m=(low+high)/2;/折半/
if(lr[0]key<lr[m]key)
high=m-1;/插入点在低半区/
else low=m+1;/插入点在高半区/
}
for(j=i-1;j>=high+1;j--)
lr[j+1]=lr[j];/记录后移/
lr[high+1]=lr[0];/插入记录/
}
}
void InitList_Sq(sqlist &L)
{
// 构造一个空的线性表L。
Lr =(type)malloc(LIST_INIT_SIZEsizeof(type));
if (!Lr) exit(0); // 存储分配失败
Llength = 0; // 空表长度为0
Llistsize = LIST_INIT_SIZE; // 初始存储容量
} // InitList_Sq
冒泡法!
#include<stdioh>
int main()
{
int a[10],i,j,t;
printf("Input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t; }
printf("The sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}
选择排序法
#include<stdioh>
void main()
{
int a[11],i,j,k,x;
printf("Input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<9;i++)
{ k=i;
for(j=i+1;j<10;j++)
if(a[j]<a[k]) k=j;
if(i!=k)
{ x=a[i];a[i]=a[k];a[k]=x; }
}
printf("The sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
以上就是关于在C语言中 编写一个程序实现从小到大排序全部的内容,包括:在C语言中 编写一个程序实现从小到大排序、C语言程序 用选择法对十个数排序、c语言的排序程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)