C语言实现排序

来源:互联网 发布:网络迷情电影 编辑:程序博客网 时间:2024/04/29 17:09

1、插入排序

#include<stdio.h>typedef struct{char *name;int score;} student;        void insert_sort (student *a,int size);int main(){int i;student a[5];a[0].name="Jim";a[0].score=89;a[1].name="Jack";a[1].score=80;a[2].name="Rose";a[2].score=95;a[3].name="Brown";a[3].score=54;a[4].name="Tom";a[4].score=98;for(i=0;i<5;i++){printf("%s:%d\n",a[i].name,a[i].score);}printf("After Sorted:\n");insert_sort(a,5);for(i=0;i<5;i++){printf("%s:%d\n",a[i].name,a[i].score);}}void insert_sort (student *a,int size){int i,j;student tmp;for(i=0;i<size;i++)for(j=i;j<size;j++){if((a+j)->score<(a+i)->score){tmp=a[j];a[j]=a[i];a[i]=tmp;}}}


2、冒泡排序

#include <stdio.h>/*定义结构体student*/typedef struct{char *name;int score;}student;/*声明函数BubbleSort()*/void BubbleSort(student *a,int size);void main(){int i;/*初始化结构体student*/student a[5];a[0].name="Tom";a[0].score=67;a[1].name="Jack";a[1].score=87;a[2].name="Alice";a[2].score=89;a[3].name="Ella";a[3].score=90;a[4].name="Einstain";a[4].score=89;for(i=0;i<5;i++){printf("%s:%d\n",a[i].name,a[i].score);}printf("after sort:\n");/*调用函数BubbleSort*/BubbleSort(a,5);for(i=0;i<5;i++){printf("%s:%d\n",a[i].name,a[i].score);}}/*定义函数BublleSort()*/void BubbleSort(student *a,int size){int i,j;student tmp;for(i=0;i<size;i++)for(j=size-1;j>=i;j--){if((a[j].score<a[j-1].score)){tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;}}}


3、希尔排序

#include <stdio.h>/*定义结构体struct*/typedef struct{char *name;int score;}student;/*声明函数shell_sort*/void shell_sort(student *a,int d,int n);void main(){int i;/*初始化结构体student*/student a[10];a[0].name="Jim";a[0].score=49;a[1].name="Tom";a[1].score=38;a[2].name="Jack";a[2].score=65;a[3].name="Jimmy";a[3].score=97;a[4].name="Ella";a[4].score=76;a[5].name="Jax";a[5].score=13;a[6].name="Tank";a[6].score=27;a[7].name="Alice";a[7].score=49;a[8].name="Tim";a[8].score=55;a[9].name="lily";a[9].score=14;for(i=0;i<10;i++){printf("%s:%d\n",a[i].name,a[i].score);}printf("after score:\n");shell_sort(a,5,10);shell_sort(a,3,10);shell_sort(a,2,10);shell_sort(a,1,10);for(i=0;i<10;i++){printf("%s:%d\n",a[i].name,a[i].score);}}void shell_sort(student *a,int d,int n){int i,j;for(i=d+1;i<=n;i++)if(a[i].score<a[i-d].score){a[0]=a[i];j=i-d;do{a[j+d]=a[j];j=j-d;}        while(j>0&&a[0].score<a[j].score);        a[j+d]=a[0];}}


原创粉丝点击