簡體   English   中英

冒泡排序,但僅對偶數放置的數字進行排序,並在 c 中留下奇數放置的元素

[英]Bubble sort, but sorting only even placed numbers ascending and leaving odd placed elements in c

我的問題是打印使用冒泡排序升序排列的數字,例如排序后的{4、1、2、1}應該是{2、1、4、1}。 我有冒泡排序的代碼

for (i=0; i<size-1; i++)
        {
            d=0;
        for (j=0; j<size-1-i; j++)
        {
            if (array[j] > array[j+1])   
            {
                temp = array[j+1];    
                array[j+1] = array[j]; 
                array[j] = temp;
                d++;
            }
        }
        if(d==0)
        break;
}

我試圖改變 [] 和 'i' 中的值,但它給了我奇怪的數字。 大小是數組的大小。

for (i=0; i<size-1; i+=2)
        {
            d=0;
        for (j=0; j<size-1-i; j++)
        {
            if (array[j] > array[j+1])   
            {
                temp = array[j+1];    
                array[j+1] = array[j]; 
                array[j] = temp;
                d++;
            }
        }
        if(d==0)
        break;
}

這是我做過的最好的嘗試,但它給出了 1 2 1 4 所以我試圖改變 j 但它沒有給出結果。

想想你的算法步長為 2;

  • for 循環中的大小條件應為size - 2以避免越界 RW
  • 步長是 2 所以i+=2
  • 將當前數字與下一個數字進行比較if (array[j] > array[j+2])

.

 for (i=0; i<size-2; i+=2)
    {
            d=0;
        for (j=0; j<size-2-i; j+=2)
        {
            if (array[j] > array[j+2])   
            {
                temp = array[j+2];    
                array[j+2] = array[j]; 
                array[j] = temp;
                d++;
            }
        }
        if(d==0)
          break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM