冒泡排序
来源:互联网 发布:linux开放tcp端口 编辑:程序博客网 时间:2024/05/17 04:25
printf("冒泡");
/************************************
文件名 : InsertSort&&BubbleSort.c
描述 : 插入排序之直接插入排序、
交换排序之起泡排序、
简单选择排序。
参考自 : 严蔚民
最后修改日期 : 2007-06-18
备注 : 参考自 严蔚民,DEV-C++
编译通过。
C:/Documents and Settings/程序运行范例>
请输入记录数(小于21):8
请输入各纪录的关键字项和数据项>>>>
L.r[ 1].key L.r[ 1].info:49 mm
L.r[ 2].key L.r[ 2].info:38 mm
L.r[ 3].key L.r[ 3].info:65 mm
L.r[ 4].key L.r[ 4].info:97 mm
L.r[ 5].key L.r[ 5].info:76 mm
L.r[ 6].key L.r[ 6].info:13 mm
L.r[ 7].key L.r[ 7].info:27 mm
L.r[ 8].key L.r[ 8].info:49 gg
选择:
1直接插入排序
2起泡排序
3简单选择排序
2
起泡排序...结果:
L.r[ 1].key=13 L.r[ 1].info=mm
L.r[ 2].key=27 L.r[ 2].info=mm
L.r[ 3].key=38 L.r[ 3].info=mm
L.r[ 4].key=49 L.r[ 4].info=mm
L.r[ 5].key=49 L.r[ 5].info=gg
L.r[ 6].key=65 L.r[ 6].info=mm
L.r[ 7].key=76 L.r[ 7].info=mm
L.r[ 8].key=97 L.r[ 8].info=mm
请按任意键继续. . .
*************************************/
#include <stdio.h>
#define MAXSIZE 20 /*一个用作事例的小顺序表的最大长度*/
typedef struct{
int key; /*关键字项 */
char info[99]; /*其他数据项 */
}RedType; /*纪录类型 */
typedef struct{
RedType r[MAXSIZE+1];/*r[0]闲置或用作哨兵单元 */
int length; /*顺序表长度 */
}SqList; /*顺序表类型 */
void InsertSort(SqList *L){
int i,j;
for(i=2;i<=L->length;i++)
if(L->r[i].key<L->r[i-1].key){/*若小,将r[i]插入有序子表*/
L->r[0]=L->r[i];/*复制为哨兵 */
L->r[i]=L->r[i-1];
for(j=i-2;L->r[0].key<L->r[j].key;j--)
L->r[j+1]=L->r[j];/*纪录后移*/
L->r[j+1]=L->r[0];/*插入到正确的位置 */
}
}
void BubbleSort(SqList *L){
int i,j,tag;
for(i=1,tag=1; tag==1 && i<L->length; i++)
tap=0;
for(j=L->length-1;j>=i;j--)
if(L->r[j+1].key<L->r[j].key){/*交换 */
L->r[0]=L->r[j+1];/*L->r[0]当作temp */
L->r[j+1]=L->r[j];
L->r[j]=L->r[0];
tag=1;
}
}
void SelectSort(SqList *L){
int i,j,min;
for(i=1;i<L->length;i++){/*选择第i小的纪录 */
for(j=i+1,min=i;j<=L->length;j++)/*选择key最小的纪录 */
if(L->r[j].key<L->r[min].key)
min=j;
if(i!=min){/*于第i个纪录交换 */
L->r[0]=L->r[i];
L->r[i]=L->r[min];
L->r[min]=L->r[0];
}
}
}
int main()
{
SqList L;
int k;
printf("请输入记录数(小于%d):",MAXSIZE+1);
scanf("%d",&L.length);
printf("请输入各纪录的关键字项和数据项>>>>/n");
for(k=1;k<=L.length;k++){
printf("L.r[%2d].key L.r[%2d].info:",k,k);
scanf("%d%s",&L.r[k].key,L.r[k].info);
}
printf("/n选择:/n1直接插入排序/n2起泡排序/n3简单选择排序/n");
scanf("%d",&k);
if(k==1) {InsertSort(&L); printf("/n直接插入排序...结果:/n");}
else if(k==2) {BubbleSort(&L);printf("/n起泡排序...结果:/n");}
else {SelectSort(&L);printf("/n简单选择排序...结果:/n");}
for(k=1;k<=L.length;k++)
printf("L.r[%2d].key=%-4d L.r[%2d].info=%s/n",k,L.r[k].key,k,L.r[k].info);
system("pause");
}
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- SQL%NOTFOUND在实际中非常有用
- 在C和C++中的变量所在的堆和栈
- 軟體多級協同開發流程
- 手工修改PVID
- Felx上传功能实现
- 冒泡排序
- 如何在wince6.0 模拟器上跑以前编译好的EVC MFC程序
- C#的多线程
- 理解MVC应用程序的执行过程
- Struts,Spring,Hibernate三大框架的面试&笔试题
- Linux内核中task_struct的中文介绍(2.4内核的)
- 人在旅途
- Google赛马--chicy
- OpenSSL 编译 ./crypto/cversion.c(105) : error C2220: warning treated as error - no 'object' file generated