2017-02-17 2 views
-1

Я написал программу для ввода чисел и напечатал их в порядке возрастания на C. Я пробовал, но он не работает должным образом. Может ли кто-нибудь сказать мне, как это сделать правильно?Сортировка чисел в порядке возрастания

Я пробовал использовать сортировку, но он не работает надлежащим образом; как это сделать?

Код:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int highest,temp=0; //decleartion 
    int a[5]; 
    int i; 
    for(i=0;i<5;i++) 
    { 
     scanf("%d",&a[i]); //taking input 
    } 
    highest=a[0]; 
    for(i=1;i<5;i++) 
    { 
     if(a[i]<a[0]) 
     { 
      temp=a[0]; 
      a[0]=a[i]; 
      a[i]=temp; //comparing 
     } 
    } 
    for(i=0;i<5;i++) 
    { 
     printf("%d\n",a[i]); //printing 
    } 
    return 0; 
} 
+1

имеют прочитанный в технике пузырьковой сортировки и попробовать реализовать код еще раз :) – Cherubim

+0

Определить максимальный элемент и повторите чтобы определить максимум для остальных элементов. – BLUEPIXY

+0

Добро пожаловать в переполнение стека. Обратите внимание, что предпочтительный способ сказать «спасибо» здесь ответы на вопросы и полезные ответы (если у вас достаточно репутации, чтобы это сделать), и, приняв наиболее полезный ответ на любой интересующий вас вопрос (что также дает вам небольшой импульс для вашей репутации ). См. Страницу [About], а также [Как задать вопросы здесь?] (Http://stackoverflow.com/help/how-to-ask) и [Что мне делать, когда кто-то отвечает на мой вопрос ? ?] (http://stackoverflow.com/help/someone-answers) –

ответ

1

Ваш код работает только для сравнения двух первых элементов.

Попробуйте это -

for (i = 0; i < n; ++i) 
{ 
    for (j = i + 1; j < n; ++j) 
    { 
     if (number[i] > number[j]) 
     { 
      temp = number[i]; 
      number[i] = number[j]; 
      number[j] = temp; 
      } 
     } 
    } 
+0

спасибо, что помогли много! –

+0

Ваш прием .. –

0

Вы также можете попробовать this-

for (i = 0; i < n; ++i) 
{ 
    for (j = i + 1; j < n; ++j) 
    { 
     if (number[i] > number[j]) 
     { 
      number[i] = number[i] + number[j]; 
      number[j] = number[i] - number[j]; 
      number[i] = number[i] - number[j]; 
     } 
    } 
} 
+0

Это очень глупый способ обмена двумя элементами массива. Он полностью рискует переполнением и берет на себя стоимость трех арифметических операций, которые занимают больше места, чем одна временная переменная. –

Смежные вопросы