在C语言中 编写一个程序实现从小到大排序

在C语言中 编写一个程序实现从小到大排序,第1张

#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(“&lt;格式化字符串&gt;”,&lt;地址表&gt;);

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语言的排序程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9298103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存