- 浏览: 74987 次
- 性别:
- 来自: 北京
#include <stdio.h> void simple_select(int a[], int n) { int i,j,k,tmp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[j]<a[k]) k=j; } if(k!=i) { tmp=a[k]; a[k]=a[i]; a[i]=tmp; } } } void shift(int a[], int low, int high) { int i=low; int j=2*i; int tmp=a[i]; while(j<=high) { if(j<high && a[j]<a[j+1]) j++; if(tmp<a[j]) { a[i]=a[j]; i=j; j=2*i; } else break; } a[i]=tmp; } /*the number of elements of a is n+1*/ /*a[0] is not used*/ void heap_sort(int a[], int n) { int i,tmp; for(i=n/2;i>=1;i--) shift(a,i,n); for(i=n;i>=2;i--) { tmp=a[i]; a[i]=a[1]; a[1]=tmp; shift(a,1,n-1); } }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 600#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 738#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 697#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 641#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 658#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1202http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1511#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 597#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 680#include <stdio.h> #i ... -
带头结点有序单链表的合并
2011-09-08 14:21 1176typedef int Item; typedef s ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1402/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---字符串---全/部分组合和全排列
2011-08-30 23:01 1214#include <stdio.h> #i ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1891/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1249/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1892/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 562http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1574结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 601#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 929hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 695/*************************** ...
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
经典排序算法 - 插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonhole sort 经典排序算法 - 归并排序Merge sort 经典排序算法 - 冒泡排序Bubble sort 经典排序算法 - ...
选择排序算法也是一种简单的排序算法,它的工作原理是通过选择最小或最大元素,并将其与第一个元素交换,以达到排序的目的。选择排序算法的时间复杂度也为O(n^2),因此它也适合小规模的数据排序。 3.插入排序算法 ...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...
本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...
插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。在C++中,可以使用两层循环实现,外层循环控制未排序部分,内层循环寻找插入...
堆排序是一种基于比较的排序算法,它通过构建一个大顶堆或小顶堆来实现排序。在计算机科学中,堆通常被理解为一种特殊的树形数据...此外,由于其内部循环较多,对于小规模数据,插入排序等其他简单排序算法可能更优。
1. **冒泡排序**:冒泡排序是一种简单直观的排序算法,通过不断交换相邻的错误顺序元素来逐步完成排序。它重复地走访过要排序的元素,依次比较每一对相邻元素,如果它们的顺序错误就把它们交换过来。走访元素的工作...
本文将对快速排序、归并排序、堆排序等常见排序算法进行比较和分析,探讨它们的优缺点和适用场景。 首先, let's 看一下这些排序算法的时间复杂度和空间复杂度: | 排序算法 | 平均情况 | 最好情况 | 最坏情况 | ...
1. 冒泡排序(Bubble Sort):冒泡排序是最简单的排序算法之一,通过不断交换相邻的不正确顺序元素,使较大的元素逐渐“浮”到序列的末尾。它的时间复杂度为O(n^2)。 2. 选择排序(Selection Sort):选择排序每次...
本文将深入探讨标题和描述中提到的一些基本排序算法,包括选择排序、冒泡排序、插入排序、希尔排序、堆排序、快速排序以及归并排序,并结合C++编程语言进行讲解。 1. **选择排序(Selection Sort)** - 选择排序是一...
- 选择排序:如简单选择排序和堆排序。 2. 非基于比较的排序算法:这类算法不依赖于元素间的比较,而是利用其他特性进行排序。例如,计数排序要求数据范围较小,基数排序要求数据可分解为多个属性。 【基于比较...
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
C语言实现常见排序算法。编译环境:VS2010。 包括: 冒泡排序 快速排序 直接插入排序 Shell排序 直接选择排序 堆排序 归并排序(递归和非递归两种) ...基数排序:顺序和静态队列两种方法 索引排序(采用简单插入排序)
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
- **堆排序**:利用堆这种数据结构所设计的一种排序算法,可以看作是一种选择排序的优化。 3. ** 动态展示** 源码中的动态展示部分,通过对每一步操作进行绘制,让学习者能够观察到: - 冒泡排序中的气泡如何...
此文件为数据结构中的九种排序算法,包含一些排序方法的过程,其九种排序包括:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,基数排序!
在这个"JavaScript-使用javascript开发的排序算法-sorting.zip"压缩包中,很可能是包含了各种常见的排序算法实现,比如冒泡排序、插入排序、选择排序、快速排序、归并排序以及堆排序等。 1. **冒泡排序**:冒泡排序...