首页 > 编程 > C++ > 正文

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

2020-01-26 14:50:07
字体:
来源:转载
供稿:网友

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

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

maopao-complex.c

//比较复杂的数组接收方法,然后从大到小排序。VC环境#include <stdio.h>#include <stdlib.h>int over=0;//用于读取数,如果读取结束,为1int 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<num; k++)  //用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<num; 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 <iostream>using namespace std;void BubbleSort (int* pData,int Count){ int iTemp; for(int i=1; i<Count; i++) {  for (int j=Count-1; j>=1; j--)  {  if (pData[j]<pData[j-1])  {   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<<data[i]<<" "; cout<<"/n";}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表