程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++完成對輸出數字組停止排序

C++完成對輸出數字組停止排序

編輯:關於C++

C++完成對輸出數字組停止排序。本站提示廣大學習愛好者:(C++完成對輸出數字組停止排序)文章只能為提供參考,不一定能成為您想要的結果。以下是C++完成對輸出數字組停止排序正文


本是一個再簡略不了的功效,然後只是冒泡排序。可是我在交互輸出數列的時刻,只用空格離隔然後回車,假如不限制數的個數,用scanf其實不能完成這個義務,他輪回獲得,到最初不克不及斷定獲得停止,而只能持續期待輸出。

這個時刻我自界說一個函數,獲得緩存區中的數(空格分隔),假如輸出停止就前往一個特定的值,這個函數是用getchar輪回嵌套完成的。自己老手,只能弄出這辦法。迎接列位年夜神指點。

maopao-complex.c

//比擬龐雜的數組吸收辦法,然後從年夜到小排序。VC情況
#include <stdio.h>
#include <stdlib.h>
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<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";
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved