三种基本排序原理(简单排序,选择排序,插入排序)2使用随机数-原创

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*******************************************************

三种基本排序演示程序

说明:此程序适用于理解三种基本排序原理(简单排序,选择排序,插入排序)2使用随机数。

时间:2012年12月3日

更新时间:2012年12月11日

更新说明:在同学的询问下,增加了随机数代码,排序数组增加到10个,增加了条件编译。

编译环境:VS2010 Windows XP

并且在重要部分有注释

本程序是自己按照原理写的原创代码,所以定为1分吧(辛苦费吧,一般我搜集的都是免费的,望大家支持下)

此程序我调试运行成功的,如果你复制到编译器不成功,可能是编译器区别造成的,请发信息给我。

请参考 C语言三种基本排序(简单排序,选择排序,插入排序)演示程序(含注释、每一个步骤,原创)

********************************************************/

#define SJS//编译带随机数的,如果不想使用随机数,请改为Normal(为5个,可自行修改个数)

#ifdef SJS//原始的

#include

#include

#include

void main()

{

int a[10];

int i,j,temp,k,s;

srand(time(0));

for(i=0;i<10;i++)

{

a[i]=rand()%55;

}

printf("简单排序\n");

for(i=0;i<10-1;i++)//基准位到倒数第二个就行了,因为最后一个数没有比较

{

printf("%d\n",i);///////////////////////////////

for(j=i+1;j<10;j++)

{

if(a[j]

{

temp=a[j];

a[j]=a[i];

a[i]=temp;

}

for(s=0;s<10;s++)////////////////////////////////////////

{

printf("%3d",a[s]);

}

printf("\n");///////////////////////////////////// }

}

printf(" 选择排序:\n");///////////////////////////////////// srand(time(0));

for(i=0;i<10;i++)

{

a[i]=rand()%55;

}

//选择排序:找到最小的交换:

for(i=0;i<10-1;i++)

{

k=i;//(最小元素下标)

for(j=i+1;j<10;j++)

{

if(a[j]

k=j;//保存下标

}

if(k!=i)

{

temp=a[k];

a[k]=a[i];

a[i]=temp;

}

for(s=0;s<10;s++)////////////////////////////////////////

{

printf("%3d",a[s]);

}

printf("\n");/////////////////////////////////////

}

//冒泡排序:相邻元素交换

printf(" 冒泡排序:\n");///////////////////////////////////// srand(time(0));

for(i=0;i<10;i++)

{

a[i]=rand()%55;

}

//for(i=0;i<10;i++)

// a[i]=5-i;///////////////////////////

for(i=0;i<10-1;i++)

{

printf("%d\n",i);///////////////////////////////

for(j=0;j<9-i;j++)

{

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

for(s=0;s<10;s++)////////////////////////////////////////

{

printf("%3d",a[s]);

}

printf("\n");///////////////////////////////////// }

}

system("pause");

}

#endif

#ifdef Normal//原始的

#include

#include

void main()

{

int a[5]={5,4,3,2,1};

int i,j,temp,k,s;

for(s=0;s<5;s++)

{

printf("%3d",a[s]);

}

printf("简单排序\n");

for(i=0;i<5-1;i++)//基准位到倒数第二个就行了,因为最后一个数没有比较{

printf("%d\n",i);///////////////////////////////

相关文档
最新文档