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)

相关讨论

经典排序思想(c语言) 2008年05月05日 星期一 20:48 /* =============================================== 作者:linweilee 时间:2005-7-25 目的:经典排序思想(c语言) ================================================ */ /* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义): 1、稳定排序和非稳定排序 简单地说就是所有相等...

by wpeng5640 - Linux文档专区 - 2009-10-21 08:30:41 阅读(839) 回复(0)

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

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

/* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义): 1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就 说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5, 则我们说这种排...

by study-linux - Linux文档专区 - 2008-11-11 21:57:33 阅读(650) 回复(0)

* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义): 1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就 说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5, 则我们说这种排序是...

by ubuntuer - Linux文档专区 - 2008-11-09 12:57:45 阅读(1029) 回复(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)

#include char.h> #include #include #include //复制函数 //此教程来源于chinaUnix論壇(http://bbs.chinaunix.net/)查看完整的教程请点:http://bbs.chinaunix.net/thread-1296106-1-1.html template void copy(T* begin, T* end, T* out) { while ( begin!=end ) {   *out=*begin;   ++out;   ++begin; } } //将两个有序数组合并到一个数组...

by 0hudu - C/C++ - 2008-10-24 20:49:29 阅读(1280) 回复(0)

c实现的插入排序法,先输入10个数,然后利用插入排序法进行排序,将结果输出。算法简单,可供初学者学习。 #include "stdio.h" #include "conio.h" main() { int a[10],r[11]; int *p; int i,j; for(i=0;ir[0]) { r[j+1]=r[j]; j--; } r[j+1]=r[0]; } for(i=1;i 本文来自chinaUnix博客,...

by liuxiqin - 网络技术文档中心 - 2007-05-12 01:54:10 阅读(787) 回复(0)

重温经典排序思想--c语言常用排序全解关键词: 排序 重温经典排序思想--c语言常用排序全解 来源: http://blog.csdn.net/rerli/archive/2003/12/15/19040.aspx /* =============================================== 作者:rerli 时间:2003-12-15 目的:重温经典排序思想,并用c语言指针实现排序算法 ================================================ */ /* =================...

by nantianyan - Linux文档专区 - 2006-08-05 15:11:39 阅读(998) 回复(0)

归并排序主要分两步: 一是将序列分成两份子序列,然后每个子序列再分成两份,如此下去,直到每个序列里面只有一个元素,那么可以认为序列有序了。这个由一个递归功能的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)