选择排序选择排序的思想很简单。
每次选择当前的最小数字。
向后移动一位,选择第二小的数字。
…
移动到倒数第二位,操作后截止。
还不懂的附上百度百科选择排序。稳定性所以到底是不是稳定的呢?不稳定解释看过上面百度百科链接的人就会觉得一定不是稳定的啊。因为例如如下:
[5 8 5 2 9 4]
这个在第一次选择最小的时候,就把5和2的位置掉换了,变成如下:
[2 8...
分类:
编程语言 时间:
2015-04-03 06:49:08
阅读次数:
205
排序算法有很多种,主要分为插入排序(直接插入排序、二分法插入排序)、交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)等,这里不说原理了,只贴代码。原理可以看严蔚敏的数据结构或者网上有人讲的原理很详细。给大家推荐一个链接点击打开链接
1.直接插入排序
package sortpackage;
import java.util.Arrays;
public class inse...
分类:
编程语言 时间:
2015-04-02 16:25:31
阅读次数:
157
选择排序的思路比较简单,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序虽然实现起来比较简单,但是效率也比较低, 为O(n2)。C语言的代码实现如下 : 1 //选择排序的C语言实现 2 void selection_...
分类:
编程语言 时间:
2015-04-01 19:51:39
阅读次数:
205
1 基本排序对于所有排序算法,被排序元素需要满足下列数学性质:Ø 自反性(reflextive):for all v,v=vØ 对称性(antisymmetric):for all v and w,if vv and if v=w then w=vØ 传递性(transitive):for all v,w and x,if v对于包含这样元素的数组,我们才能对其排序。1.1 选择排序(sel...
分类:
编程语言 时间:
2015-03-31 22:21:23
阅读次数:
147
冒泡法:
基本思想:每次将相邻的两个数比较,将小的调到前头(即为升序排列)。首先比较第一和第二两个数,小的调到前头,再将比完后的第二个数与第三个数比较,同理小的调到前头。如此比较下去。假设有6个数参与排序,则第一趟两两之间共比较5次,第一趟比完之后最大的数已经到底。然后进行第二趟比较,两两之间共比较4次,将次大数调到倒数第二个数的位置。共需比较5趟,5趟比完之后呈现升序排列。
总结规律:如果有...
分类:
编程语言 时间:
2015-03-31 18:07:26
阅读次数:
151
/// /// 选择排序--递归写法 /// /// 数组 /// 开始下标 /// 结束下标 public void selectSort(int[] data, int start, int end) ...
分类:
编程语言 时间:
2015-03-31 14:34:26
阅读次数:
124
选择排序
方法一:
void Select_Sort(int *a,int n)
{
//int n=strlen(a);
int i,j;
int max,temp;
for(i=0;i
{
max = i;
for(j=i;j
{
if(a[max]
max = j;
...
分类:
编程语言 时间:
2015-03-30 23:12:27
阅读次数:
182
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。
不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。
胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。在k路归并排序中经常用到。...
分类:
其他好文 时间:
2015-03-30 21:16:18
阅读次数:
173
选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1
思想:每次从未排序的队列中选出最小的和此未排序队列最前面的进行交换。即最开始假设第一个最小,此时min = i = 0,依次拿后面的数与第一个进行比较,当发现a[j]小于a[min]时,让min = j,遍历一遍后,如果i != min,将a[i] 和 a[min]交换。此时,第一个数是有序的,后面是无...
分类:
编程语言 时间:
2015-03-30 11:26:29
阅读次数:
134