奇偶交换排序

Posted 薛定谔的猫ovo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇偶交换排序相关的知识,希望对你有一定的参考价值。


题目描述

奇偶交换排序是一种交换排序。它的第一趟对序列中的所有奇数项 i i i扫描,第二趟对序列中的所有偶数项 i i i扫描,若 A [ i ] > A [ i + 1 ] A[i]>A[i+1] A[i]>A[i+1],则交换它们。第三趟对序列中的所有奇数项 i i i扫描,第四趟对序列中的所有偶数项 i i i扫描,……,如此反复,直至整个序列全部排好序为止。写出奇偶交换排序的算法。


实现代码

#include<bits/stdc++.h>
using namespace std;

void Sort(int arr[], int n)
    int oddsort = 0;
    int evensort = 0;
    while(!oddsort || !evensort) //奇偶交换排序
        oddsort = 1;
        evensort = 1;
        for(int i=0; i<n-1; i+=2)  //奇排序
            if(arr[i]>arr[i+1])
                swap(arr[i],arr[i+1]);
                oddsort = 0;
            
        
        for(int i=1; i<n-1; i+=2) //偶排序
            if(arr[i]>arr[i+1])
                swap(arr[i],arr[i+1]);
                evensort = 0;
            
        
    


int main()
    int n;
    cin>>n;
    int arr[n];
    for(int i=0; i<n; i++)
        cin>>arr[i];
    
    Sort(arr, n);
    for(int i=0; i<n; i++)
        cout<<arr[i]<<" ";
    
    return 0;

以上是关于奇偶交换排序的主要内容,如果未能解决你的问题,请参考以下文章

奇偶排序

排序算法系列:奇偶排序算法

奇偶排序Odd-even sort

编程题#3:奇偶排序

Codeforces1545 A. AquaMoon and Strange Sort(思维,排序奇偶性)

数组905. 按奇偶排序数组