排序算法
ox0080
surprise
展开
-
堆排序C语言版
AfxStd.h#pragma once#ifndef AFXSTD_H#define AFXSTD_H#include<stdio.h>#include<stdlib.h>#include<assert.h>#endif // !AFXSTD_Hheap.h#pragma once#include"AfxStd.h"#ifndef HEAP_...原创 2018-06-22 10:36:48 · 143 阅读 · 0 评论 -
选择排序C语言版
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[0]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[1]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i-1]交换,使有序序列不断增长直到全部排序完毕.void select_sort(int *arr,int length){ int...原创 2018-10-28 19:22:34 · 348 阅读 · 0 评论 -
插入排序C语言版
插入排序是最简单的排序算法。正式表述为:插入排序每次从无序数据集中取出一个元素,扫描已排好序的数据集,并将它插入有序集合的合适位置上。虽然乍一看插入排序需要独立为有序和无序的元素预留足够的存储空间,但实际上它是不需要额外的存储空间的。插入排序是一种较为简单的算法,但它在处理大型数据集时并不高效。因为在决定将元素插入哪个位置之前,需要将被插入元素和有序数据集中的其他元素进行比较,这会随着的数据集...原创 2018-10-28 19:32:26 · 173 阅读 · 0 评论 -
归并排序C语言版
归并排序的基本思想:将两个及其以上的有序表合并为一张有序表,把待排序序列通过分治法分为若干个有序子序列,然后每两个子序列合并为一个子序列,经过多次合并后整合为一张有序表。归并排序是稳定排序,它也是一种十分高效的排序,能利用完全二叉树特性的排序一般性能都不会太差。java中Arrays.sort()采用了一种名为TimSort的排序算法,就是归并排序的优化版本。从上文的图中可看出,每次合并操...原创 2018-10-28 19:57:52 · 415 阅读 · 2 评论 -
希尔排序C语言版
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本. 希尔排序的基本思想就是:将需要排序的序列划分为若干个较小的序列,对这些序列进行直接插入排序,通过这样的操作可使需要排序的数列基本有序,最后再使用一次直接插入排序。 在希尔排序中首先要解决的是怎样划分序列,对于子序列的构成不是简单地分段,而是采取将相隔某个增量的数据组成一...原创 2018-10-28 20:06:37 · 2754 阅读 · 1 评论 -
桶排序C语言版
桶排序 (Bucket sort)是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,它不受到 O(n log n) 下限的影响。 /* *桶排序,时间复杂度为O(n),但...原创 2018-10-28 20:14:08 · 1766 阅读 · 0 评论 -
冒泡排序C语言版
冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置.void bubble_sort(int *arr,int length){ int temp; for(int i = 0;i < length - 1; ...原创 2018-10-28 20:19:32 · 869 阅读 · 0 评论 -
快速排序C语言版
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。--------------------- 思想:1 选取一个关键字(key)作为枢轴,一般取整组...原创 2018-10-24 16:24:39 · 768 阅读 · 0 评论