【C語言】調整陣列使奇數全部都位於偶數前面。
這道題目呢是這樣的:
輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。
首先定義一個函式,函式的功能就是將陣列的奇數全部放在前面,偶數全部放在後面。那麼要將奇數全部放在陣列前面,偶數全部放在陣列的後面,就肯定需要兩個指標,一個從左邊開始找偶數,一個從右邊開始找奇數,找到了就交換,直到所有的元素都被交換完畢。那麼我們怎麼實現這個功能呢?
定義一個 left 指標變數,從左邊開始走,一個一個判斷,是奇數就繼續向右,那麼直到找到偶數跳出while迴圈。
while (((left < right) && (*left) % 2 != 0))
{
left++;
}
同理,我們也可以定義一個 right 指標變數,來從右邊開始找奇數,找到就跳出 while 迴圈。
while (((left < right) && (*right) % 2 == 0))
{
right--;
}
然後我們將找到的一組奇數偶數交換:
if (left < right)
{
int tmp=*left;
*left = *right;
*right = tmp;
}
然後交換一組之後,還有其他組,這又是一個 while 迴圈。所以整體程式碼如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
void Movenum(int a[], int sz)
{
int *left = a;
int *right = a + sz - 1;
while (left < right)
{
while (((left < right) && (*left) % 2 != 0))
{
left++;
}
while (((left < right) && (*right) % 2 == 0))
{
right--;
}
if (left < right)
{
int tmp=*left;
*left = *right;
*right = tmp;
}
}
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
int i = 0;
int sz = (sizeof(a) / sizeof(a[0]));
Movenum(a, sz);
for (i = 0; i < sz; i++)
{
printf("%d\n", a[i]);
}
system("pause");
return 0;
}
相關文章
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- JZ-013-調整陣列順序使奇數位於偶數前面陣列
- 劍指 Offer 21. 調整陣列順序使奇數位於偶數前面陣列
- 劍指offer面試題14 調整陣列順序使奇數位於偶數前面面試題陣列
- 面試題21:調整陣列順序奇數位於偶數前面面試題陣列
- 調整陣列順序使奇數位於偶數前面,偶數和偶數之間的相對位置不變陣列
- [每日一題] 第十一題:調整陣列順序使奇數位於偶數前面每日一題陣列
- 【劍指Offer學習】【面試題14 :調整陣列順序使奇數位於偶數前面】面試題陣列
- LeetCode題解(Offer21):調整陣列順序使奇數位於偶數前面(Python)LeetCode陣列Python
- 陣列進行奇數和偶數操作 把奇數放在陣列前面 偶數放在陣列後面陣列
- 演算法學習記錄十一(C++)--->調整陣列順序使奇數前偶數後演算法C++陣列
- 面試演算法題(4)--將一個整數陣列中的所有奇數放到偶數前面面試演算法陣列
- c語言 將一個陣列中的奇數和偶數分開放在一起C語言陣列
- C語言實驗——整數位 (sdut oj)C語言
- 第三章:查詢與排序(下)------------- 3.8題解_調整陣列順序-奇數在左偶數在右排序陣列
- 資料結構之C語言模擬整數陣列實現資料結構C語言陣列
- 關於數位顛倒--C語言描述C語言
- JavaScript 奇數行或者偶數行JavaScript
- C語言陣列C語言陣列
- 統計位數為偶數的數字(C++)C++
- 1到100迴圈,並把奇數放到陣列中,把偶數放到map中陣列
- 求陣列內所有偶數的和陣列
- C語言萌新上手:數列分段C語言
- 關於大數(C語言)C語言
- c語言的陣列C語言陣列
- C語言(字元陣列)C語言字元陣列
- c語言字元陣列C語言字元陣列
- C語言實驗——分割整數 (sdut oj)C語言
- R語言中如何抽取向量的偶數項或者奇數項R語言
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- [ASM C/C++] C語言陣列ASMC++C語言陣列
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- 位運算實現整數與位元組陣列轉換陣列
- 力扣896. 單調數列-C語言實現-簡單題力扣C語言
- c語言關於陣列的簡單運算C語言陣列
- 【c語言】求兩個數中不同的位的個數C語言
- C語言程式設計-長整數加法運算C語言程式設計
- C#陣列引數C#陣列