首页 > 编程知识 正文

数据结构的排序算法,数据结构排序算法代码

时间:2023-05-04 05:02:59 阅读:147705 作者:3104

一.选择排序算法介绍

选择排序的基本的想法是选择各匝中n-i1 (I=1,2,…n-1 )记录中关键字最小的记录作为顺序排列的第I个记录。 基于该思想的算法主要有简单选择排序、鞋楦选择排序和堆叠排序。

今天,我们将分析比较简单的直接选择排序,初步掌握选择排序算法的基本思想。

简单选择排序的基本思想:第一次,在排序对象记录r[1]~r[n]中选择最小的记录,并将其与r[1]进行交换; 第二次,在排序对象的记录r[2]~r[n]中选择最小的记录,将其与r[2]进行交换; 这样,第I趟在排序对象的记录r[i]~r[n]中选择最小的记录,将其与r[i]进行交换,使顺序序列成长直到所有的排序完成。

二、直接选择排序算法描述和实例演示

n条记录的直接选择排序经过n-1次直接选择排序后得到有序的结果。 具体算法如下。

初始状态:无序区为R[1.n],有序区为空; 第I回合的排序(I=1,2,3 . n-1 )开始时,当前的有序区域和无序区域分别为r(1.I-1 )和r ) R(i.n )。 该分类是从当前的无序区域中选择-关键词最小的记录R[k],将其与无序区域的第一个记录r进行交换,将R[1.i]和r[I1.n]分别作为记录数增加了1的新的有序区域和记录n-1转弯结束,排列有序了。 示例1 :以数组a[7]={12、23、9、24、15、3、18}为例,排序过程如下

三.代码演示

#include stdio.h//选择排序voidselectionsort(int*arr,int len ) {int i,j; for(I=0; ilen; I ) {int min=i; for(j=I1; Jen; j () if ) arr[j]arr[min] ) {min=j; }}int tmp=arr[i]; arr[i]=arr[min]; arr[min]=tmp; }//打印数据voidshow(int*arr,int len ) ) {int i; for(I=0; ilen; I ) {printf('%d ',arr[i] ); }printf((n ); (}int main ) ) inta )=(12,23,9,24,15,3,18 ); intlen=sizeof(a )/sizeof ) a[0]; selectionsort(a,len ); show(a,len ); 返回0; }程序结果截图

四.算法分析

排序的交换操作选择0次到(n-1 )次之间。 选择排序的http://www.Sina.com/n * (n-1 )/2次之间。 选择已排序的http://www.Sina.com/0到3 * (n-1 )次之间。

最佳情况: t(n )=o(n^2) ) ) ) ) ) ) ) )。

最坏的情况: t(n )=o ) n^2) ) ) ) )。

平均情况: t(n )=o ) n^2) ) ) ) ) ) ) )。

稳定性:不稳定

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。