冒泡排序插入排序基数排序考试代码

来源:互联网 发布:python 月份加减 编辑:程序博客网 时间:2024/04/30 03:39
#include <stdio.h>#include <stdlib.h>#include <string.h>void Readnumber(int n,int a[]);int bubble_sort(int *a,int k,int n);int selection_sort(int *a,int k,int n);void Printnumber(int n,int a[]);void swap(int *a,int *b);int main(){    int *a,b,n,ret,k,result;    printf("please input the number of a:\n");    ret=(scanf("%d",&n));    getchar();    if(ret!=1)    {        printf("the input is wrong!\n");        fflush(stdin);        exit(1);    }    else    {        if(n<=0)        {            printf("the input is wrong!\n");            exit(2);        }        else        {            a=(int *)malloc(sizeof(int)*n);            Readnumber(n,a);            Printnumber(n,a);            printf("what kind of way do you want:1 represent bubble and 2 represent select\n");            ret=scanf("%d",&b);            getchar();            if((ret!=1)||(b>2)||(b<1))            {                printf("the input is wrong!\n");                fflush(stdin);                exit(4);            }            printf("please input the number of k:\n ");            ret=(scanf("%d",&k));            getchar();            if((ret!=1)||(k>n)||(k<=0))            {                printf("the input is wrong!\n");                fflush(stdin);                exit(5);            }            switch(b)            {            case 1:                result=bubble_sort(a,k,n);                break;            case 2:                result=selection_sort(a,k,n);                break;            default:                printf("the number is wrong\n");                break;            }            printf("The k th largest number is %d",result);        }    }    return 0;}void Readnumber(int n,int a[]){    for(int i=0; i<n; i++)    {        printf("please input the number :\n");        int ret=(scanf("%d",&a[i]));        getchar();        if(ret!=1)        {            printf("the input is wrong!\n");            fflush(stdin);            exit(3);        }    }}void Printnumber(int n,int a[]){    for(int i=0; i<n; i++)    {        printf("%d\t",a[i]);    }    printf("\n");}int selection_sort(int *a,int k,int n){    int i,j;    for(i=0; i<k; i++)    {        for(j=i+1; j<n; j++)        {            if(a[i]<a[j])                swap(&a[i],&a[j]);        }    }    return a[k-1];}int bubble_sort(int *a,int k,int n){    int i,j,m,t=0;    for(i=n-1;t>k,i>0; i--)    {        for(j=0;j<i;j++)        {            if(a[j]>a[j+1])                swap(&a[j],&a[j+1]);        }        t++;    }    return a[n-k];}void swap(int *a,int *b){    int temp;    temp=*a;    *a=*b;    *b=temp;}int csort(int *data,int size,int k){    int *counts,*temp;    int i,j;    if((counts=(int*)malloc(sizeof(int)*k))==NULL)        goto Exit;    if((temp=(int*)malloc(sizeof(int)*size))==NULL)        goto Exit;        for(i=0;i<k;i++)        {        counts[i]=0;        }        for(j=0;j<size;j++)        {        counts[data[j]]=counts[data[j]]+1;        }        for(i=1;i<k;i++)        {        counts[i]=counts[i]+counts[i-1];        }      for(j=size-1;j>=0;j--)        {        temp[counts[data[j]-1]]=data[j];        counts[data[j]]=counts[data[j]]-1;        }        memcpy(data,temp,size*sizeof(int));        free(counts);        free(temp);        return 0;    Exit:        if(counts!=NULL)  free(counts);        if(temp!=NULL)  free(temp);}

1 0
原创粉丝点击