- 浏览: 75399 次
- 性别:
- 来自: 北京
#include <stdio.h> void merge(int a[], int tmp[],int pleft, int pright, int rightend) { int leftend=pright-1; int num=rightend-pleft+1; int pos=pleft; while(pleft<=leftend && pright<=rightend) { if(a[pleft]<=a[pright]) tmp[pos++]=a[pleft++]; else tmp[pos++]=a[pright++]; } while(pleft<=leftend) tmp[pos++]=a[pleft++]; while(pright<=rightend) tmp[pos++]=a[pright++]; int i; for(i=0;i<num;i++,rightend--) a[rightend]=tmp[rightend]; } void msort(int a[], int tmp[], int left, int right) { int mid=(left+right)/2; if(left<right) { msort(a,tmp,left,mid); msort(a,tmp,mid+1,right); merge(a,tmp,left,mid+1,right); } } void merge_sort(int a[], int n) { int tmp=malloc(n*sizeof(int)); if (tmp!=NULL) { msort(a,tmp,0,n-1); free(tmp); } else printf("error!\n"); }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 608#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 701#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 647#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 649#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 664#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1209http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1519#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 603#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 685#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1184typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1411/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---字符串---全/部分组合和全排列
2011-08-30 23:01 1222#include <stdio.h> #i ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1898/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1257/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1896/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 587http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1578结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 607#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 936hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 699/*************************** ...
相关推荐
归并排序
Java常用排序算法-归并排序 归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),...
归并排序(Merge Sort)是一种高效的、稳定的排序算法,它采用了分治法(Divide and Conquer)的设计理念。在Python中实现归并排序,我们可以将一个大问题分解为两个或多个相同或相似的小问题,然后分别解决这些小...
归并排序算法是一种高效的排序算法,它的工作原理是通过将数组分为两个部分,然后将每个部分排序,最终合并两个部分以达到排序的目的。归并排序算法的时间复杂度为O(n log n),因此它适合大规模的数据排序。 6.堆...
归并排序(Merge Sort)是一种基于分治策略的高效排序算法,它的主要思想是将大问题分解成小问题,然后逐个解决小问题,最后再将解决好的小问题合并成解决大问题的答案。这个过程可以形象地比喻为将两个已排序的列表...
本文将对快速排序、归并排序、堆排序等常见排序算法进行比较和分析,探讨它们的优缺点和适用场景。 首先, let's 看一下这些排序算法的时间复杂度和空间复杂度: | 排序算法 | 平均情况 | 最好情况 | 最坏情况 | ...
经典排序算法 - 归并排序Merge sort 经典排序算法 - 冒泡排序Bubble sort 经典排序算法 - 选择排序Selection sort 经典排序算法 - 鸡尾酒排序Cocktail sort 经典排序算法 - 希尔排序Shell sort 经典排序算法 - ...
归并排序是一种高效的排序算法,基于分治策略。在计算机科学中,数据结构和算法是核心部分,因为它们直接影响程序的效率和性能。归并排序是排序算法中的一个重要概念,尤其在处理大量数据时,其稳定性及平均时间...
归并排序是一种经典的排序算法,基于分治策略。在计算机科学中,分治法是一种将大问题分解为小问题来解决的方法。归并排序利用这一思想,将一个大数组拆分成两个或更多个小数组,分别对这些小数组进行排序,然后将...
本主题将深入探讨四种常见的排序算法:归并排序、快速排序以及与链表相关的排序方法。 首先,我们来讨论归并排序(Merge Sort)。这是一种基于分治策略的排序算法。归并排序将大问题分解为小问题,然后逐步合并这些...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
本文将深入探讨标题和描述中提到的一些基本排序算法,包括选择排序、冒泡排序、插入排序、希尔排序、堆排序、快速排序以及归并排序,并结合C++编程语言进行讲解。 1. **选择排序(Selection Sort)** - 选择排序是一...
常见的内部排序算法有插入排序、Shell排序、堆排序、冒泡排序、快速排序、归并排序等。每种算法都有其特点和适用场景,如插入排序和冒泡排序适用于小规模数据集,而快速排序和归并排序则更适用于大规模数据集。 ###...
除此之外,还有其他一些排序算法,如归并排序,它采用分治策略,将数组分割成两半,分别排序后再合并,保证了稳定性,时间复杂度为O(N log N)。 在实际应用中,应根据数据规模、数据分布以及内存限制等因素选择合适...
本篇文章主要探讨了如何在VC++环境中利用多线程技术来实现三种经典的排序算法:冒泡排序、快速排序和归并排序,并对它们的性能进行了比较。 首先,冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次...
【基础算法】-C语言实现归并排序归并排序算法思路先将待排序的序列拆分成若干小规模子序列,直到每个子序列可以直接排序为止。然后对每个子序列进行排序,合并成新的有序序列。重复第二步,直到只剩下一个排序完毕的...
根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...
在这个"JavaScript-使用javascript开发的排序算法-sorting.zip"压缩包中,很可能是包含了各种常见的排序算法实现,比如冒泡排序、插入排序、选择排序、快速排序、归并排序以及堆排序等。 1. **冒泡排序**:冒泡排序...
总之,这个压缩包提供了一个实用的C语言实现的归并排序示例,对于理解和掌握排序算法,尤其是归并排序,是一个很好的学习资源。通过阅读和理解代码,你可以深入理解分治法的思想以及如何在C语言中实现高效排序。
此文件为数据结构中的九种排序算法,包含一些排序方法的过程,其九种排序包括:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,基数排序!