C语言 调整一个数组的顺序,使得奇数在总在偶数的前边
2016-05-10 21:02
225 查看
思路:
类似快速排序中的POTITION函数,用两个指针,一个指针P1依次向后遍历判断是不是奇数,另一个P2保持一个特性,就是P2指针前的数字都是P1判断过的奇数,后面一直到P1指针的位置都是判断过的偶数,当P1新找到一个奇数时,将P2++后并与P1所指的数字进行交换,直到P1完成循环。
类似快速排序中的POTITION函数,用两个指针,一个指针P1依次向后遍历判断是不是奇数,另一个P2保持一个特性,就是P2指针前的数字都是P1判断过的奇数,后面一直到P1指针的位置都是判断过的偶数,当P1新找到一个奇数时,将P2++后并与P1所指的数字进行交换,直到P1完成循环。
#include<stdio.h> void potition(int arr[], int size) { if(arr[0]%2 == 0) { } int i = 0; int j = 0; for(i = 0; i<size; i++) { if(arr[i]%2 != 0) { int tmp = arr[i]; ++j; arr[i] = arr[j]; arr[j] = tmp; } } int tmp = arr[0]; arr[0] = arr[j]; arr[j] = tmp; } int main() { int arr[] = {2,4,1,3,6,7,8,9}; potition(arr,sizeof(arr)/sizeof(int)); int i = 0; for(i = 0; i < sizeof(arr)/sizeof(int); i++) { printf("%d\n",arr[i]); } return 0; }
相关文章推荐
- C语言 斐波那契数列
- C语言 旋转数组的最小数字
- C++第五次实验
- C++界面库大全2013
- C++ Primer 学习笔记_93_用以大型程序的工具 -命名空间[续2]
- 从c++的菱形继承到 C#的接口机制
- c++构造json数组
- c++实验五-数组选择
- effective modern C++读书笔记
- c语言基础(一)
- C++ Primer 学习笔记_92_用来大型程序的工具 -命名空间[续1]
- C++ Primer 学习笔记_91_用以大型程序的工具 -命名空间
- C++ Primer 学习笔记_90_用于大型程序的工具 -错误处理[续3]
- C++ Primer 学习笔记_89_用于大型程序的工具 -错误处理[续2]
- C++ Primer 学习笔记_88_用于大型程序的工具 -错误处理[续1]
- C++ Primer 学习笔记_87_用于大型程序的工具 -错误处理
- C++ Primer 学习笔记_86_模板与泛型编程 -满载与函数模板
- C++ Primer 学习笔记_85_模板与泛型编程 -模板特化[续]
- C++作业5
- 由显式调用析构函数引发的思考