数据结构————简单排序

/* 对顺序表L作简单选择排序 */

void SelectSort(SqList *L)

{

 int i,j,min;

 for(i=1;i<L->length;i++)

 { 

  min = i;       /* 将当前下标定义为最小值下标 */

  for (j = i+1;j<=L->length;j++) /* 循环之后的数据 */

  {

       if (L->r[min]>L->r[j])  /* 如果有小于当前最小值的关键字 */

             min = j;     /* 将此关键字的下标赋值给min */

  }

  if(i!=min)      /* 若min不等于i,说明找到最小值,交换 */

       swap(L,i,min);    /* 交换L->r[i]与L->r[min]的值 */

 }

}

爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少。还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。 
        冒泡排序的思想就是不断的在交换,通过交换完成最终的排序,这和做股票短线频繁操作的人是类似的。我们可不可以像只有在时机非常明确到来时才出手的股票高手一样,也就是在排序时找到合适的关键字再做交换,并且只移动一次就完成相应关键字的排序定位工作呢?这就是选择排序法的初步思想。
        选择排序的基本思想是每一趟在n-i+1(i=1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录。我们这里先介绍的是简单选择排序法。
        简单选择排序法(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。

时间: 2024-10-14 00:11:25

数据结构————简单排序的相关文章

数据结构-简单排序

在我们的业务中,有很多情况都需要根据某种需要针对要返回的数据进行排序,但是排序是一种非常耗时的操作,特别是当数据量大的时候,所有有时候我们也会说,数据的排序是很重要的,但是也是非常耗时间的.在这里简单介绍一下简单排序,这些排序算法执行速度较慢,但算法逻辑简单,在某些时候,比其他的复杂排序算法更加有效,同时也能帮助我们理解其他的复杂排序算法. 一.冒泡排序 冒泡算法的排序规则:重复比较相邻的两个元素,如果第一个比第二个大,就交换两个元素的位置,重复这个动作,就可以将最大值移动到后面.一趟(从第一个

数据结构 - 简单选择排序(simple selection sort) 详解 及 代码(C++)

数据结构 - 简单选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601965 选择排序(selection sort) : 每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录. 简单选择排序(simple selection sort) : 通过n-i次关键字之间的比较, 从n-i+1个记录中选出关键字最小的记录, 并和第i个记录交换. 选择排序需

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

数据结构与算法分析之简单排序算法

在排序算法中,简单排序主要有三种,分别为冒泡排序.选择排序.插入排序,学习理解好这三种排序算法有助于进一步研究数据结构与算法分析.下面,简单地谈一谈冒泡排序.选择排序.插入排序的原理及区别. 冒泡排序原理: 1.比较相邻的元素.如果前一个比后一个大,它们就交换. 2.每对元素都要进行同样的动作,从后往前比较. 3.每趟都会确定一个位置的元素,因此n个元素,需要n-1趟才能确定各个元素的位置. 例如:对23,4,56,11四个数进行冒泡排序. 第一趟 4,23,11,56 第二趟 4,11,23,

Java数据结构和算法(三)——简单排序

单单有数据还不够,对于数据的展现,经常要按照一定的顺序进行排列,越高要求的排序越复杂,这篇只介绍三种大小的简单排序. 1)冒泡排序 模拟:有数组,1,4,2,5,7,3. (1)首先从1开始冒泡,1比4小,不冒,4大于2,冒上去,与2交换位置,4比5小,不冒,7比3大,冒,结果:1,2,4,5,3,7 (2)接下来从2开始,因为第一个元素冒过了,重复(1),结果:1,2,4,3,5,7 (3)从第三位4开始,结果1,2,3,4,5,7 (4)虽然看起来已经排好序,但是还是要继续冒,接下来就是从第

数据结构--排序(上)--简单排序(冒泡,插入)

简单排序(冒泡,插入) 介绍两大类算法,一类是排序,一类是查找 前提:X是排序的算法 void X_sort( ElementType A[],int N) . N是正整数,只讨论基于比较的排序(< = >有定义) 只讨论内部排序(所有数据都可以导入内部空间) 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变. 没有一种排序是任何情况下都表现最好的. 冒泡排序 第一次冒泡最大的泡泡一定在最下面. void Bubble_sort(ElementType A[], int N){ for

数据结构之简单排序的三种玩法

本文主要介绍,一个简单排序算法都可以有哪几种玩法(以选择排序为例,代码请在cpp文件下运行) 选择排序...总结为三个步骤就是: 1.在一段区间内找最大/最小元素. 2.将最大/最小元素与区间中的第一个值进行交换 3.缩小查找区间 如果你还没有理解?不用担心,请参考:选择排序_百度百科:http://baike.baidu.com/item/选择排序 玩法1:初窥门径 如果理解了选择排序的算法,想要把它实现成一段代码,对于代码能力比较强的小伙伴来说,并不是一件复杂的事情,因此我们达到的第一重境界

数据结构--排序--简单排序

1 /*插入排序--是基本排序里面性能比较好的(比较适合基本有序的排序) 2 *排序的思想:一个序列,前边是有序的,后边是无序的,拿出一个元素进行插入到已经有序 3 * 的部分(这里就涉及移动的操作)--先找到位置,再移动 4 *特点:一趟排序下来每个元素的位置可能不是固定的 5 *时间复杂度:O(N2) 6 *排序的稳定性:稳定的 7 *使用场景:数据基本有序的情况下 8 * */ 9 public class TestInsertSort { 10 11 public static void

数据结构-各类排序算法总结[结局]

各类排序算法总结 五.分配类排序->基数排序: 基数排序是一种借助于多关键码排序的思想,是将单关键码按基数分成"多关键码"进行排序的方法.基数排序属于"低位优先"排序法,通过反复进行分配与收集操作完成排序. 对于数字型或字符型的单关键字,可以看成是由多个数位或多个字符构成的多关键字, 此时可以采用这种"分配-收集"的办法进行排序,称作基数排序法.其好处是不需要进行关键字间的比较. 例如:对下列这组关键字{278, 109, 063, 930