加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

一个排序的swf

发布时间:2020-12-15 06:25:24 所属栏目:百科 来源:网络整理
导读:http://files.cnblogs.com/JCSU/sorter.swf /* ****************************************************************************** /*?PRE /*?版权所有????:?- /*?模块名??????:?排序 /*?文件名??????:?sort.cpp /*?功能描述????:?排序方法的实现 /*?作者???

http://files.cnblogs.com/JCSU/sorter.swf



/*******************************************************************************
/*?<PRE>
/*?版权所有????:?-
/*?模块名??????:?排序
/*?文件名??????:?sort.cpp
/*?功能描述????:?排序方法的实现
/*?作者????????:?<xxx>
/*?版本????????:?1.0
/*?-----------------------------------------------------------------------------
/*?备注????????:?-
/*?-----------------------------------------------------------------------------
/*?修改记录????:
/*?日?期????????版本?????修改人????????修改内容
/*?2011/01/01???1.0??????<xxx>?????????创建
/*?</PRE>
/*******************************************************************************
/*
/*???1.?排序方法分类?(稳定的排序用'Y'表示,不稳定的排序用'N'表示)???
/*
/*???插入排序:直接插入排序(Y)、希尔排序
/*???交换排序:冒泡排序(Y)、快速排序(N)
/*???选择排序:直接选择排序(N)、堆排序(N)
/*???归并排序:二路归并排序(Y)
/*
/*==============================================================================
/*
/*???2.?排序方法的特点
/*?
/*???快速排序:适合对无序记录排序,平均性能最好,时间复杂度为O(nlogn)
/*???直插排序:从待排序列中依次取出元素与已排子序列比较,找出在已排子序列中的位置。元素有序时比较次数最少。
/*???冒泡排序:每一趟把最大元素置后
/*???选择排序:从待排序列中选出最小的元素,放在已排子序列的末端。能在排序完成前能输出前几个最小的元素
/*???堆排序:类似于选择排序,是完全二叉树的一种应用。一趟排序后最后一个元素或最大或最小
/*???直接插入排序和冒泡排序:元素逐个比较,时间复杂度为O(n^2)
/*
******************************************************************************
*/
#include?
<stdio.h>


*****************************************************************************
/*?数据类型和常量定义
/*****************************************************************************

#define?LQ(a,?b)?((a)?<=?(b))*****************************************************************************
/*?函数原型声明
/*****************************************************************************
void?InsertSort(int?x[],??n);?//直接插入排序?BubbleSort(冒泡排序?QuickSort(?low,0)">?high);?快速排序?SelectSort(简单选择排序

******************************************************************************
/*?<FUNC>
/*?函数名???:?InsertSort
/*?功能?????:?直接插入排序
/*?参数?????:?int?x[],???待排序列
/*????????????int?n,?????序列中元素个数
/*?返回值???:?-
/*?备注?????:?-
/*?作者?????:?<xxx>
/*?</FUNC>
******************************************************************************
?n)
{
????
?sentinel?=?0;??sentinel:?哨兵?
????
?i,?j,?k;
????
for(i?1;?i??n;?i++)??序列中的第一个元素可以看成一个有序表?
????{
????????
if(LQ(x[i],?x[i?-]))
????????{
????????????sentinel
x[i];??复制为哨兵?
????????????
(j??i?;?j?>=?&&?LQ(sentinel,?x[j]);?--j)
????????????????x[j?
+]??x[j];??记录后移?
????????????x[j?
?sentinel;??插入到正确位置?
????????}
????????printf(
"第?%d?趟排序后的结果:?",?i);?输出每一趟排序的结果
????????
(k?;?k??n;?k)
????????????printf(
%d?n);
????}
}


******************************************************************************
/*?<FUNC>
/*?函数名???:?BubbleSort
/*?功能?????:?冒泡排序
/*?参数?????:?int?x[],?????序列中元素个数
/*?返回值???:?-
/*?备注?????:?一种交换排序
/*?作者?????:?<xxx>
/*?</FUNC>
******************************************************************************
?temp,?exchange;
????
(in-;?i>)??最多做n-1趟排序????{
????????exchange
=本趟排序开始前,?交换标志应为假????????(j;?ji;?j)
????????{
????????????
(LQ(x[j+],?x[j]))
????????????{
????????????????temp
x[j];
????????????????x[j
]x[j];
????????????????x[j]
temp;
????????????????exchange
;
????????????}
????????}
????????
(!exchange)?本趟排序未发生交换,提前终止算法????????????break;
????????printf(
i);?(k;?kn;?k******************************************************************************
/*?<FUNC>
/*?函数名???:?QuickSort
/*?功能?????:?快速排序
/*?参数?????:?-
/*?返回值???:?-
/*?备注?????:?一种交换排序
/*?作者?????:?<xxx>
/*?</FUNC>
******************************************************************************
?Partition(?high)
{
????
?x[low];
????
?pivotkey?while(low??high)
????{
????????
(lowhigh??LQ(pivotkey,?x[high]))?high;
????????x[low]?
?x[high];
????????
?LQ(x[low],?pivotkey))?low;
????????x[high]?
?x[low];
????}
????x[low]
sentinel;
????
return?low;
}

?pivotloc,0)">?high)
????{
????????pivotloc
Partition(x,?low,?high);
????????printf(
排序过程:?);?<8);
????????QuickSort(x,?pivotloc
******************************************************************************
/*?<FUNC>
/*?函数名???:?SelectSort
/*?功能?????:?简单选择排序
/*?参数?????:?-
/*?返回值???:?-
/*?备注?????:?一种选择排序
/*?作者?????:?<xxx>
/*?</FUNC>
******************************************************************************
?SelectMinKey(?temp??x[low],?poslow;
????
<=(LQ(x[low],?temp))
????????{
????????????temp?
?x[low];
????????????pos?
?low;
????????}
????????low
;
????}
????
?pos;
}

n;?i)
????{
????????j?
?SelectMinKey(x,?i,0)">);
????????
!=j)
????????{
????????????temp
x[i];
????????????x[i]
x[j];
????????????x[j]
temp;
????????}
????????printf(
"
);
????}
}


/* ******************************************************************************
/*?<FUNC>
/*?函数名???:?main
/*?功能?????:?测试函数
/*?参数?????:?-
/*?返回值???:?-
/*?备注?????:?-
/*?作者?????:?<xxx>
/*?</FUNC>
******************************************************************************
*/
void ?main()
{
????
int ?x[ 10 ]? = ?{ 35 19 23 17 18 - 1 3 12 5 },?i;
????printf(
" n直接插入排序序列:? " );
????
for (i = 0 ;?i < ++ )
????????????printf(
%d? nn );
????InsertSort(x,0)">);
????printf(
);
????
????
?y[ 88 29 48 37 16 14 32 2 11 };
????printf(
冒泡排序序列:? )
????????printf(
);
????BubbleSort(y,0)">?z[
8 49 38 65 97 76 13 27 快速排序序列:? );
????QuickSort(z,128)">7
?m[ 45 24 简单选择排序序列:? );
????SelectSort(m,0)">n
); }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读