100000个数字排序 php,C++_C++实现对输入数字组进行排序,本是一个再简单不了的功能, - phpStudy...

C++实现对输入数字组进行排序

本是一个再简单不了的功能,然后只是冒泡排序。可是我在交互输入数列的时候,只用空格隔开然后回车,如果不限定数的个数,用scanf并不能完成这个任务,他循环获取,到最后不能判断获取结束,而只能继续等待输入。

这个时候我自定义一个函数,获取缓存区中的数(空格分隔),如果输入结束就返回一个特定的值,这个函数是用getchar循环嵌套实现的。本人新手,只能弄出这方法。欢迎各位大神指导。

maopao-complex.c

//比较复杂的数组接收方法,然后从大到小排序。VC环境

#include

#include

int over=0;//用于读取数,如果读取结束,为1

int main(void)

{

//这一部分,接收数据,判断数据个数

int getvalue(void); //函数原型。返回从缓冲区取得的数,如果输入结束,返回42949672

int k; //子循环临时变量

int a[100]; //建立100个数空间,可增缩范围

int num; //输入的个数

int ifend = 1; //逻辑变量,控制while语句

int i=0; //通用计次临时变量

int value; //元素值储存地

printf("请输入任意数的序列,空格隔开:\n");

while (ifend)

{

value = getvalue();

if(value == 42949672)

ifend = 0;

else

{

a[i] = value;

i++;

}

} //结束后,i为数组成员个数

num = i;

//开始排序

for (i=0; i < num-1; i++) //循环8次,第n次把第n位以后的数的最大值放第n个

{

for(k=i+1; k

{

if (a[i] < a[k]) //选大数,放第n位

{

a[i] = a[i] + a[k];

a[k] = a[i] - a[k];

a[i] = a[i] - a[k];//以上三步,把较大值放到a[i]

}

}

}

//输出新数组

printf("排序后:\n");

for (i=0; i

{

printf("%d ",a[i]);

}

printf("\n");

return 0;

}

int getvalue(void)

{

char a[16]={0}; //数字接收临时数组

int k;

int value=0;

char temp;

int last = 1;

int ifend = 1;

int i = 0; //用来定位数组

if (over == 1)

{

ifend = 0;

return (42949672);

}

temp = getchar();

while(ifend)

{

if (temp == 32)//接收结束,把临时数组转化成数字

{

value = atoi(a);

ifend = 0;

}

else if (temp == '\n')//缓冲区已无数值

{

value = atoi(a);

over = 1;

ifend = 0;

}

else //输入有效数值

{

if (temp == '-')

{

last = -1;

}

else

{

a[i] = temp;

i++;

}

temp = getchar();

}

}

value*=last;

return (value);

}

下面是一个简单的冒泡排序:

#include

using namespace std;

void BubbleSort (int* pData,int Count)

{

int iTemp;

for(int i=1; i

{

for (int j=Count-1; j>=1; j--)

{

if (pData[j]

{

iTemp=pData[j-1];

pData[j-1]=pData[j];

pData[j]=iTemp;

}

}

}

}

void main()

{

int data[]= {10,9,8,7,6,5,4}

BubbleSort(data,7);

for (int i=0;i<7;i++)

cout<

cout<

}

相关阅读:

win10系统桌面图标间距该怎么设置?

jquery实现图片放大镜功能

ASP.NET Repeater 单双行数据换色示例

Linux系统是如何挂载iscsi存储的?

微软终极必杀 最可靠的系统Windows10正式版曝光了

20分钟成功编写bootstrap响应式页面 就这么简单

Linux中查看帮助相关的命令整理

NodeJS学习笔记之FS文件模块

CSS中使用Flexbox来达到居中效果的实例

js 设置缓存及获取设置的缓存

mysql中如何判断是否支持分区

Fedora怎么把home下文件夹名改成英文?

Android字符串转Ascii码实例代码

Android仿美团下拉菜单(商品选购)实例代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值