2017-5
马小驴
这个作者很懒,什么都没留下…
展开
-
经典排序——基数排序LSD——C语言版
/*基数排序——LSD*//*一共10个桶,从个位开始,将元素按照每一位的数字分配到相应桶中,然后再重新收集,每次收集后,元素之间保持了相对位置(个位小的在前,经过重新分配后,依然保持个位小的在前)最后一次收集后元素将从小到大依次排列*/#include <stdio.h>#define digit 4 //几位数字,随便设置#define bucket_size 10 //每个桶的容量/*原创 2017-05-10 22:32:03 · 996 阅读 · 0 评论 -
经典排序——冒泡排序——C语言版
/*冒泡排序*//*从前面开始,前后数字比较,将大的交换到后面,则循环一轮下来最大的数字到了最后,以此类推每次循环都将最大的放在最后*//*如果第一遍遍历没有交换则代表数组有序,则跳出循环,用sorted作为标记*/#include <stdio.h>#include <stdlib.h>int bouble_sort(int s[],int n){ int i,j,temp,so原创 2017-05-10 15:49:15 · 265 阅读 · 0 评论 -
经典排序——插入排序——C语言版
/*插入排序*//*从第一个开始排序,排到第n时,前面的n-1个已经是有序的了,所以n可以比较并插入到前面的有序序列*/#include <stdio.h>#include <string.h>int insert_sort(int s[],int n){ int i,j,temp; for (i=0;i<n;i++) { j=i+1;原创 2017-05-10 15:18:41 · 183 阅读 · 0 评论 -
经典排序——堆排序——C语言版
/*堆排序*//*利用数组实现完全二叉树,通过比较左孩子,右孩子和父亲结点的大小,将最小的与父亲节点交换,从而使得最小的一直向上移动。完成一次后将最末尾的节点值移动到最顶,重复前面操作,每次都使得最小的到顶端,并取出*/#include<stdio.h>int heap_adjust(int s[],int i,int max){ int temp,lchild,rchild,k;原创 2017-05-10 15:52:34 · 275 阅读 · 0 评论 -
经典排序——希尔排序——C语言版
#include <stdio.h>#include <string.h>#include <math.h>int shell_sort(int s[],int n){ int i,j,temp,d; float a,b; //int p; b=n; a=b/2; //printf("%f\n",a); for(d=ceil(a);d>=原创 2017-05-10 15:53:57 · 401 阅读 · 0 评论 -
经典排序——归并排序——C语言版
/*归并排序*//*先将数组从中间逐个拆分,比较拆分后的两组数据,并将其合并,最终合并称为原数组*/#include <stdio.h>int merge(int s[],int low,int mid,int high){ int k[high-low+1]; int i,j,t=0; i=low; j=mid+1; while(i<=mid&&j<=原创 2017-05-10 15:55:12 · 258 阅读 · 0 评论 -
经典排序——快速排序——C语言版
/*快速排序*//*选取数组的第一个数作为轴,从末尾的数字开始比较,当比轴小则与轴交换位置,在用轴与开头的数字进行比较,当比轴大则与轴交换位置,最终确定轴的位置。之后从轴的位置将数组分为两个部分,对各个部分重复选轴定轴的操作*/#include <stdio.h>int partition(int s[],int low, int high){ int i,j,temp; te原创 2017-05-10 15:56:42 · 231 阅读 · 0 评论 -
经典排序——桶排序——C语言版
/*桶排序——最多两位数*//*申请和分配每个桶的空间,将数组插入桶中,本程序为每个数除以10,即每个桶内进行个位排序,之后按顺序从每个桶内把数据取出排列到数组内*/#include <stdio.h>#include <stdlib.h>#define bucket_size 15//有多少个桶 15可以最大排到150typedef struct node{ int key;原创 2017-05-10 15:58:04 · 1218 阅读 · 0 评论