将排序数组按绝对值大小排序 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 排序的数组有可能包含正负, 可以使用折半查找确定中值位置, 然后再使用两个指针, 顺次…
标签:排序算法
选择排序算法
假定存在数组 array[0..n-1], 选择排序的核心思想是: 第 i 趟排序是从后面的 n – i + 1(i = 1,2,3,4,. . .,n – 1)个元素中选择一个值最小的元素与该 …
二路归并排序算法
将两个按值有序序列合并成一个按值有序序列,则称之为二路归并排序,下面有自底向上和自顶向下的两种排序算法,自顶向下的排序在本文末讲述,使用递归实现,代码较简洁,经供参考。 1. 归并子算法:把位置相邻的两个按值有序序列合并…
归并排序算法 递归及循环实现
第一步合并相邻长度为1的子数组段,这是因为长度为1的子数组段是已经排好序的。 用一次对数组arr的线性扫描就足以找出所有这些排好序的子数组段。然后将相邻的排好序的子数组段两两合并,构成更大的排好序的子数组段。 #incl…
【算法】快速排序/数组第K小的元素
快速排序 和归并排序一样,也是采用分治(Divide and Conquer)思想。分为三步: 分解:将数组A[p…q]划分成两个数组A[p..r-1]和A[r+1..q],使得A[p..r-1]中的每个元素…
【算法】基数排序
计数排序 学习基数排序之前首先学习计数排序。 计数排序假设每个元素都是在0到k之间的一个整数。 基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到…
【算法】桶排序
桶排序 桶排序(Bucket Sort)假设输入数据服从均匀分布,然后将输入数据均匀地分配到有限数量的桶中,然后对每个桶再分别排序,对每个桶再使用插入排序算法,最后将每个桶中的数据有序的组合起来。前面了解到基数排序假设输…
排序算法入门之冒泡排序
在开发中,对一组数据进行有序地排列是经常需要做的事情,所以掌握几种甚至更多的排序算法是绝对有必要的 本文章介绍的是排序算法中较简单的一种算法:冒泡排序 题外话:在深入学习更多排序算法后和在实际使用情况中,冒泡排序的使用还…
排序算法入门之冒泡排序优化
这篇文章是对上一篇文章中的冒泡排序进行优化 先来说说,冒泡排序哪些地方需要优化: 根据上一篇文章的内容,可以知道冒泡排序的核心是两两对比进行交换。如果有一个无序数列(2,1,3,4,5,6,7,8,9,10) 按照上一篇…
排序算法入门之简单选择排序
在学了冒泡排序后,会发觉这种算法就是不断比较交换。虽简单直接,显然给人一种繁琐的感觉。那有没有更好一点的算法呢?这当然有啦,没有就糟糕透了 :-P 这篇文章介绍一种较冒泡要好的排序算法:简单选择排序 看到“选择”这两字估…
学过的算法中最快捷——快速排序法
前言 上次总结了其他的三种算法:选择排序、冒泡排序和插入排序,这次总结一个更加高效的排序算法——快速排序法,如果想要了解其余三种算法,请移步c#版选择法、冒泡法、插入…
算法入门--堆排序2(建立最小堆,从大到小)
#include <stdio.h> #include <stdlib.h> int left(int i)//返回左孩子位置 { return 2*i; } int right(int i)//…