
算法
文章平均质量分 72
0x710
这个作者很懒,什么都没留下…
展开
-
排序算法之插入排序 (C语言)
void insertion_sort(int *p,int n){ for (int i=1;i<n;i++) for (int j=0;j<i;j++) { if (p[j]>p[i]) { int a = i; int b = j;原创 2012-11-02 14:25:56 · 614 阅读 · 0 评论 -
排序算法系列:堆排序(heapsort)(C语言)
通俗理解:运用数据结构中的最大堆结构,取出数组中的中的最大元素,在重新构造最大堆,再找出其最大元素,以此类推直到取完堆结构中的元素为止,最终得到排好序的数组。观看动态过程voidswap(int* a,int *b){ int swap; swap = *a; *a = *b; *b = swap;}//创建最大堆void build_heap(int *a,int siz原创 2012-11-02 15:25:23 · 2289 阅读 · 1 评论 -
排序算法之快速排序(Quicksort) (C语言)
通俗理解:在数组中随便取一个数k,一般是第一个,然后对数组操作,使小于k的数都在k的左边,大于k的数在k的右边(不考虑相等情况),然后采用分而治之的思想,运用递归函数,最终得到排好序的数组。观看动态过程voidquick_sort(int *a,int left,int right){ int i,j,temp; if (left < right) { i = left; j原创 2012-11-02 14:52:04 · 1808 阅读 · 0 评论 -
排序算法系列:归并排序(Merge sort)(C语言)
通俗理解:运用分而治之的思想,编写递归函数,将大数组排序转化为小数组排序,最后再将其合并。void merge_sort(int*p,int low,int high){ int mid = (low+high)/2; if (low <high) { merge_sort(p,low,mid); merge_sort(p,mid+1,high); merge(p,low,mi原创 2012-11-02 15:47:43 · 7247 阅读 · 0 评论 -
排序算法系列:计数排序(Counting sort)(C语言)
通俗理解:通过将待排序中的数组与辅助数组的下标建立一种联系,辅助数组储存与自己下标相等的原数组的每个元素的个数,然后进行一些操作保证计数排序的稳定性(可能理解的不够深刻,欢迎提出见解)。观看动态过程int count_sort (int * const array, const int size) { int * count ; int * temp;原创 2012-11-07 13:14:44 · 2142 阅读 · 0 评论 -
排序算法系列:基数排序(Radix sort)(C语言)
通俗理解:结合计数排序,通过对待排数组中元素每一位进行排序,最终达到对整个数组排序的效果。观看动态过程#include #include #define MAXK 10int get_int(void);int count_sort (int*array,int n,int d);int get_value(int a,int d);void radix_sort(int* a,i原创 2012-11-07 13:34:11 · 2255 阅读 · 0 评论 -
双链表排序问题(C语言)
#include #include typedef struct node{ int data; struct node *pre; struct node *next; } Node;int get_int(void);Node* get_node(void);void insert(Node*p,Node* new_node);int main(){原创 2013-01-08 19:58:37 · 1785 阅读 · 0 评论