堆排序同直接选择排序一样是选择排序的一种。堆排序是借助一种数据结构——堆来完成排序,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
什么是堆:
关于二叉树这里就不叙述了。堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容...
分类:
编程语言 时间:
2015-08-14 19:05:50
阅读次数:
161
#include
#include
#include"LinkList.h"
//创建单链表
void CreateList(LinkList L,DataType a[],int n){
int i;
for(i=1;i<=n;i++)
InsertList(L,i,a[i-1]);
}
//用链表实现选择排序。将链表分为两段,p指向应经排序的链表部分,q指向未排序的链表部分
void...
分类:
其他好文 时间:
2015-08-14 06:33:17
阅读次数:
156
选择排序工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。选择排序是和冒泡排序差不多的一种排序。和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,。...
分类:
编程语言 时间:
2015-08-13 23:48:16
阅读次数:
414
前面两篇介绍了两种插入排序算法:直接插入排序和希尔排序。这篇介绍选择排序的一种:直接选择排序。从名字就可以看出直接选择排序与直接插入排序很相似,两者相同点在与都是将待排序序列分成有序区和无序区两部分,不同之处在于直接插入排序是从无序区选出一个插入到有序区合适的位置,而直接选择排序是从无序区选出最小的一个插入到有序区尾部,使得有序区保持有序。
基本思想:
一组待排序的数据,首先将其划分成两部分,一...
分类:
编程语言 时间:
2015-08-13 22:28:53
阅读次数:
203
概念每次旅行到最后n-i+1(i=1,2,...,n-1)取纪录最年轻的排序列表i记录动态效果: 长处:算法简单,easy实现缺点:每次仅仅能确定一个元素Java实现:package com.liuhao.sort;import java.util.Arrays;//定义一个数据包装类class D...
分类:
编程语言 时间:
2015-08-12 21:20:05
阅读次数:
143
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5,3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
选择排序算法步骤如下:
第1步:在未排序的n个数中找到最小数,讲它与a[0]交换。...
分类:
编程语言 时间:
2015-08-12 19:31:05
阅读次数:
114
选择排序就是在选择数组元素上做文章,关键是如何选择?选择的标准是什么?选择之后放在哪?所有这些都是选择排序的问题。 选择排序算法中,通常会有以下操作: 从数组第一个元素开始。 遍历整个数组,找到最小的元素。 将最小的元素与数组第一个元素交换。 从第二个元素开始重复上述步骤。 看一个例子: 可以看到,...
分类:
编程语言 时间:
2015-08-12 16:43:17
阅读次数:
144
Mergeksorted linked lists and return it as one sorted list. Analyze and describe its complexity.思路I: 选择排序每次都比较各个list的头指针所指的val,取最小的那个。时间复杂度O(n2)Result...
分类:
其他好文 时间:
2015-08-11 20:47:38
阅读次数:
121
选择排序介绍选择排序(Selection sort)是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。总结:两个f...
分类:
编程语言 时间:
2015-08-11 13:35:58
阅读次数:
109
1.简单排序2.树形选择排序思想:将一个数组中的数两两一组,更大的数(或者更小的数)作为这两个数的父节点,依次向上构建一个完全二叉树。树的根结点即为最大的数。输出该数字之后,对应的叶子结点换成负无穷。然后在此基础上重新构建二叉树,直到所有结点均为负无穷为止。复杂度:第一个值的复杂度为n,其他值的复杂...
分类:
编程语言 时间:
2015-08-10 23:44:29
阅读次数:
230