使用数组对整数进行排序。

时间:2014-04-01 03:19:44

标签: c++ arrays sorting

我正在尝试以下练习,但在此过程中陷入困境。

  

编写一个读取任意整数序列的完整程序   从标准输入,并将它们写入标准输出   排序顺序并删除所有重复项。你可以假设   输入最多包含100个整数。

我很难理解数组并试图弄清楚我需要做什么。我写了一些代码,但我有一种强烈的感觉,我还没有完成它。我并没有要求别人为我完成它,我只是想要一些关于如何开始或正确方向的指导。任何帮助是极大的赞赏。

#include <iostream>
using namespace std;

int main()
{

    //I believe this is a start.
    int numbers [100];

    //declaring a counter
    int i;

    //making a for loop to count the integers from 1 to 100
    for (i=0; i<100; i++)
    {cin>>numbers[i];}

    //This is the point where I got lost

    if (i<100)
        cout<<numbers[i]<<""<<endl;

} 

1 个答案:

答案 0 :(得分:0)

为了对某些int编号进行排序,你可以通过多种方式尝试一些你想要的东西。

一种方法是在第一次循环中读取数据时,将数据放入数组中的正确位置,使用另一个循环并移位新数据,直到达到较小的数字。然后将新数据放在前面。
如果您找到相同的数字,您可以忽略新数据并使用中断并获取新数据。

for (i=0; i<100; i++)
{
    int temp ; 
    cin>> temp;
    int j;
    for(j = i; j>= 0 ; j--)
    {
        if(j != 0 && number[j-1]== temp)
            break ; 
        if(j != 0 && number[j-1] > temp)
        {
            number[j] = number[j-1] ;  
        }
        else
        {
            number[j] = temp ; 
            break;
        }
    }  
}

我认为这种方式最好,但你有其他方式: 使用 bubble sort Quick sort 之类的算法对所有数字进行排序,然后使用循环删除所有重复的数字。

int temp[100] ; 
int k = 0 ; 
temp[0] = number[0] ;
for(int i = 1 ; i < 100 ; i++)
{
    if(temp[k] != number[i])
    {
        k++; 
        temp[k] = number[i] ; 
    }

}