ChinaUnix.net
相关文章推荐:

c语言 排序算法

排序算法一直都是让我头疼的算法。为了全面掌握排序算法,我就整理了常用的排序算法。 首先我们来了解一些基本概念: (1)稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就 说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5, 则我们说这种排序是稳定的,因为a2排序前在a4的前面,...

by lanlovehua - Linux文档专区 - 2009-10-23 20:43:19 阅读(979) 回复(0)

相关讨论

这里的基数排序用LSD方法,即从最右边位开始,把位数相同的放在一起,这步需要把数组按这个规则分配到一个二维数组,分配完后,再把这个二维数组从新顺序放回到原来数组。 然后从右二位开始,重复以上,直到数组里面位数最高的数都分配过。最后放回原来数组的时候,整个数组就是顺序的了。还有就是要先知道数字位数的范围,这里最多为3位数。 整个算法很好理解,主要是程序里面的处理位数,复制数组很麻烦,不小心就错了。[code]#i...

by jack1007 - C/C++ - 2012-10-26 16:59:37 阅读(2653) 回复(0)

本帖最后由 jack1007 于 2012-10-25 10:04 编辑 堆排序思想: 首先把数组看成是一个无序的堆结构,然后首先把数组构建成大根堆,及所有父节点不小于他的两个子节点。 构建的大根堆的特点是顶点值一定不小于所有子节点的值。 然后把大根堆的顶点,也就是数组第一个元素值和堆的尾节点值交换。 这样最大值就一定最后面。尾节点之前的堆结构就失去大根堆特性了,然后需要重新构建大根堆(除了尾节点以外,因为尾节点已经有顺序了,...

by jack1007 - C/C++ - 2012-10-25 10:02:33 阅读(4068) 回复(0)

本帖最后由 jack1007 于 2012-10-24 13:44 编辑 之前纠结半天,还是分开写好理解多了,先写直接插入排序函数,再用插入排序函数进行希尔分组排序。[code]#include void swap(int *a, int *b); void print_arr(int *arr, int arr_len); void shellsort(int *arr, int arr_len); void insertion_sort(int *int_arr, int div_len, int arr_len); int main() { int arr[] = {99, 56, 48, 93, 25, 32, 49, 88, 12, 74,...

by jack1007 - C/C++ - 2012-10-24 16:11:35 阅读(6879) 回复(2)

归并排序主要分两步: 一是将序列分成两份子序列,然后每个子序列再分成两份,如此下去,直到每个序列里面只有一个元素,那么可以认为序列有序了。这个由一个递归功能的mergesort函数实现。 二是完成两个有序子序列合并,在merge函数里面实现。 将两个部分组合起来,就实现了归并排序,mergesort函数实现。 代码如下:[code]#include void print_arr(int *arr, int arr_len); void merge(int *arr, int left, int midle...

by jack1007 - C/C++ - 2012-10-26 09:59:42 阅读(1082) 回复(0)

递归函数quicksort里面没有判断左右范围大小,导致无穷递归,纠结了半天。闲来没事,写简单的数据结构,学学编程。[code]#include int quichsort(int *arr, int left, int right); void swap(int *a, int *b); int main() { int arr[] = {9, 2, 1, 4, 3, 15, 11, 6, 7}; int arr_len = sizeof(arr) / sizeof(arr[0]); int i; for (i = 0; i < arr_len; i++) { printf("%d ", arr); } printf("\n"); ...

by jack1007 - C/C++ - 2012-10-23 17:46:03 阅读(5240) 回复(2)

有执行操作类型(几十上百种)为 a、b、c、d、e、f、g...A、B、C.... 现在已知执行操作顺序为(其中逗号表示并行可同时执行,>的左边表示必须先执行的操作,右边表示后执行的操作) b> a,e,A,C,f e>B,d,A>g h,w>b>c>a p>q>y y>x l>m>n ... ... 每一行代表一个操作顺序,其中的操作类型可以在多行中出现。 最终想得到分组排序结果为: h,w>b>C,f,c>e,a>B,d>A>g p>q>y>x l>m>n

by AmboLong - Shell - 2011-08-24 09:42:34 阅读(6348) 回复(25)

/** * Copytright (c) blueantelope, 2008 All rigths reserved. * 算法研究之用 */ package org.blueantelope.mysrc.Arithmetic; /** * 排序算法 * @author blueantelope * @version 0.1 * @since 2008-05-13 */ public class SortClass { private static final int[] unSort = {4, 6, 8, 2, 3, 1, 5, 7, 9, 12, 11}; // 未排序内容 /** * 复制未排序的数组而得到新的数组 * @return 未排序...

by blueantelope - Java文档中心 - 2008-05-13 18:04:53 阅读(782) 回复(0)

排序算法-插入排序 插入排序算法:数组长度为N,共遍历P=(1到N-1)次,每次遍历下标<=P的数字已按大小排序。[code] | 32,23,54,43,74,66,94,86 P=1| 23,32,54,43,74,66,94,86 P=2| 23,32,54,43,74,66,94,86 P=3| 23,32,43,54,74,66,94,86 P=4| 23,32,43,54,74,66,94,86 P=5| 23,32,43,54,66,74,94,86 P=6| 23,32,43,54,66,74,94,86 P=7| 23,32,43,54,66,74,86,94[/code]java实现如下: Java代码[code]1.p...

by feiyang10086 - Java - 2012-03-15 16:45:45 阅读(1142) 回复(1)

需要对大量数组里面的内容进行排序 每个数组含内容0~60000不等得数据 目前使用PERL 自带的SORT排序,求更快的排序算法,谢谢

by ztj2247 - Perl - 2011-08-12 18:35:32 阅读(3755) 回复(6)

[code] #include #include #include int main(int argc, char **argv) { int i; omp_set_num_threads(argc); #pragma omp parallel for for (i = 0; i < argc - 1; i++) { long int this = atol(argv[i+1]); sleep(this); printf("%ld\n", this); fflush(stdout); } return 0; } [/code]原地址:http://dis.4chan.org/read/prog/1295544154 :D 有意思啊,用sleep来...

by abaowu - PHP - 2011-06-21 18:38:53 阅读(2300) 回复(3)