Advertisement

将奇数移动至数组前半部分

阅读量:

例如,当输入一个数组 arr[]={1,2,3,4,5,6,7,8,9,10} 时,目标是将所有奇数排列在偶数之前,最终结果为{1,3,5,7,9,2,4,6,8,10}。这一过程与冒泡排序的逻辑存在相似之处。在此过程中,我们设定一个边界变量bount,并将其初始值设为0。随后对数组进行一次遍历,在比较相邻两个元素的奇偶属性时发现:若前一元素为偶数而后一元素为奇数,则交换这两个数值。为了实现该操作需编写一个Swap函数用于交换数值,并通过取模运算%2来判断数值的奇偶性质。

复制代码
    void Swap(int* x, int* y){
    		int tmp = 0;
    		tmp=*x;
    		*x = *y;
    		*y = tmp;
    }
    
    
      
      
      
      
      
      
    

每次进行奇数查找操作时,需完成一次循环过程,以识别出一个奇数并将其安置于恰当的位置。[0,bound)所代表的是当前已完成排序的区域,而[bound,size)则表示尚未完成排序的部分(其中size为数组的总长度)。具体实现的函数形式如下:

复制代码
    void Separate(int* arr, int size){
    	//每次找奇数的方式
    	//[0,bo

全部评论 (0)

还没有任何评论哟~