【演算法】 調整數組順序,使得奇數在前偶數在後,分別保證奇數和偶數之間的相對位置不變

來源:互聯網
上載者:User

標籤:奇偶排序

題目:輸入一個整形數組,將數組重新排序,使得所有奇數在前偶數在後,並使奇數之間和偶數之間的相對位置爆出不變。

思想:從數組開頭開始遍曆所有數組。當碰到偶數時,將偶數打包,即記錄到目前為止偶數的個數,把這些偶數看成一個整體;當碰到奇數時,將這個奇數與前面的偶數整體對調位置。

#include <stdio.h>#include <stdlib.h>void nuo(int *a,int j,int nu)                     //將奇數與前面所有偶數調換位置{        int b=a[j];        while(nu--){                a[j]=a[j-1];                j--;                   }        a[j]=b;}int main(){        int* a;        int i = 0 ;        int j = 0 ;        int nu= 0 ;        printf("請輸入數組個數:\n");scanf("%d",&i);a=malloc(sizeof(int)*i);printf("請輸入數組,之間用逗號隔開:\n");for(;j<i;j++){scanf("%d,",&a[j]);}j=0;        while(i!=j){                if(a[j]%2==1){                   //這個數為奇數                        nuo(a,j,nu);                        j++;                              }                else{                            //當這個數為偶數時,記錄偶數個數                        j++;                        nu+=1;                    }           }        printf("a[%d]=",i);        j=0;        while(i!=j){        printf("   %d",a[j++]);                   }        printf("\n");        return 0;}


本文出自 “淩峰2019” 部落格,請務必保留此出處http://lingfeng2019.blog.51cto.com/12741667/1910061

【演算法】 調整數組順序,使得奇數在前偶數在後,分別保證奇數和偶數之間的相對位置不變

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.