2015-05-08 6 views
0
#include<stdio.h> 
#include<conio.h> 

int main() 
{ 
    int a[100]; 
    int i, j, temp, n ; 
    printf("how many numbers you want to sort : \n"); 
    scanf("%d",&n); 
    printf("Enter %d number values you want to sort\n", n); 
    for(j=0; j<n; j++) 
    scanf("%d",&a[j]); 

    for(j=1;j<n;j++) 

Как мы знаем, что вышеупомянутый цикл цикла должен повторяться n раз, как следует развивать логику для этого, я знаю, что внутренний цикл будет помогать сортировать элементы в списке один раз, то почему мы должны повторять внутренний цикл n разBubble сортировать сомнения

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

    printf ("\n\nArray after sorting:\n") ; 

    for (i = 0 ; i <n ; i++) 
    printf ("%d\t", a[i]) ; 
    getch(); 
} 

ответ

0

во внутреннем цикле вы найдете максимум. вы не можете быть уверены, что другие номера отсортированы.

другая версия (быстрее):

do 
for (i = 0; i < n-1; i++) do: 
    if A[i] > A[i+1] then 
    swap(A[i], A[i+1]) 
    end if 
end for 
n = n-1 

в то время как п> 1

(не проверяя максимум предыдущих циклов)

0

Для того, чтобы понять, что код, извлечь код, который выводит текущие значения массива для отдельной функции. Затем каждый раз, когда вы меняете два элемента, выводите сообщение о том, какие элементы вы меняете, и как выглядит результирующий массив.

Вы не только увидите, как он сортируется, но и вы найдете ошибку в коде. Я постараюсь помочь вам дальше, но я не хочу испортить вам опыт обучения.

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