最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 奇偶排序算法詳解及實(shí)例代碼

 更新時間:2016年11月10日 15:19:15   投稿:lqh  
這篇文章主要介紹了C語言 奇偶排序算法詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下

C語言奇偶排序算法

奇偶排序,或奇偶換位排序,或磚排序,是一種相對簡單的排序算法,最初發(fā)明用于有本地互連的并行計(jì)算。這是與冒泡排序特點(diǎn)類似的一種比較排序。該算法中,通過比較數(shù)組中相鄰的(奇-偶)位置數(shù)字對,如果該奇偶對是錯誤的順序(第一個大于第二個),則交換。下一步重復(fù)該操作,但針對所有的(偶-奇)位置數(shù)字對。如此交替進(jìn)行下去。

使用奇偶排序法對一列隨機(jī)數(shù)字進(jìn)行排序的過程

處理器數(shù)組的排序

在并行計(jì)算排序中,每個處理器對應(yīng)處理一個值,并僅有與左右鄰居的本地互連。所有處理器可同時與鄰居進(jìn)行比較、交換操作,交替以奇-偶、偶-奇的順序。該算法由Habermann在1972年最初發(fā)表并展現(xiàn)了在并行處理上的效率。

該算法可以有效地延伸到每個處理器擁有多個值的情況。在Baudet–Stevenson奇偶合并分區(qū)算法中,每個處理器在每一步對自己所擁有的子數(shù)組進(jìn)行排序,然后與鄰居執(zhí)行合并分區(qū)或換位合并。

Batcher奇偶?xì)w并排序

Batcher奇偶?xì)w并排序是一種相關(guān)但更有效率的排序算法,采用比較-交換和完美-洗牌操作。

Batcher的方法在擁有廣泛互連的并行計(jì)算處理器上效率不錯。

算法

舉例:待排數(shù)組[6 2 4 1 5 9]

第一次比較奇數(shù)列,奇數(shù)列與它的鄰居偶數(shù)列比較,如6和2比,4和1比,5和9比

[6 2 4 1 5 9]

交換后變成

[2 6 1 4 5 9]

第二次比較偶數(shù)列,即6和1比,5和5比

[2 6 1 4 5 9]

交換后變成

[2 1 6 4 5 9]

第三趟又是奇數(shù)列,選擇的是2,6,5分別與它們的鄰居列比較

[2 1 6 4 5 9]

交換后

[1 2 4 6 5 9]

第四趟偶數(shù)列

[1 2 4 6 5 9]

一次交換

[1 2 4 5 6 9]

以下表現(xiàn)其單處理器算法,類似冒泡排序,較為簡單但效率并不特別高。

// Completed on 2014.10.8 12:05
// Language: C99
//
// 版權(quán)所有(C)codingwu  (mail: oskernel@126.com) 
// 博客地址:http://www.cnblogs.com/archimedes/

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h> 
void swap(int *a, int *b)
{
  int t;
  t = *a;
  *a = *b;
  *b = t;
}
void printArray(int a[], int count)
{
  int i;
  for(i = 0; i < count; i++)
    printf("%d ",a[i]);
  printf("\n");
}
void Odd_even_sort(int a[], int size) 
{
  bool sorted = false;
  while(!sorted)
  {
    sorted = true;
    for(int i = 1; i < size - 1; i += 2)
    {
      if(a[i] > a[i + 1])
      {
        swap(&a[i], &a[i + 1]);
        sorted = false;
      }
    }
    for(int i = 0; i < size - 1; i += 2)
    {
      if(a[i] > a[i + 1])
      {
        swap(&a[i], &a[i+1]);
        sorted = false;
      }
    }
  }
}
int main(void)  
{
  int a[] = {3, 5, 1, 6, 9, 7, 8, 0, 11};
  int n = sizeof(a) / sizeof(*a);
  Odd_even_sort(a, n);
  printArray(a, n);
  return 0;
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Qt實(shí)現(xiàn)發(fā)送HTTP請求的示例詳解

    Qt實(shí)現(xiàn)發(fā)送HTTP請求的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何通過Qt實(shí)現(xiàn)發(fā)送HTTP請求,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 利用C++實(shí)現(xiàn)一個線程安全的map

    利用C++實(shí)現(xiàn)一個線程安全的map

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個線程安全的map(使用ChatCPT生成),代碼是通過兩輪對話完善的,感興趣的小伙伴可以了解一下
    2023-05-05
  • 簡介C/C++預(yù)處理器的一些工作

    簡介C/C++預(yù)處理器的一些工作

    這篇文章主要介紹了C/C++預(yù)處理器的一些工作,有助于理解編譯器底層的工作流程,需要的朋友可以參考下
    2015-07-07
  • C語言通訊錄管理系統(tǒng)課程設(shè)計(jì)

    C語言通訊錄管理系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語言通訊錄管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C語言中那些你必須知道的常用關(guān)鍵字

    C語言中那些你必須知道的常用關(guān)鍵字

    這篇文章主要介紹了C語言中我們常用的關(guān)鍵字靜態(tài)static的詳細(xì)講解和typedef?、#define定義常量和宏,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問題及解決

    c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問題及解決

    這篇文章主要介紹了c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言時間函數(shù)之mktime和difftime詳解

    C語言時間函數(shù)之mktime和difftime詳解

    這篇文章主要為大家詳細(xì)介紹了C語言時間函數(shù)之mktime和difftime,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一,希望能夠給你帶來幫助
    2022-02-02
  • 一文帶你深入了解C++中的類型轉(zhuǎn)換

    一文帶你深入了解C++中的類型轉(zhuǎn)換

    在C語言中,如果賦值運(yùn)算符左右兩側(cè)類型不同,或者形參與實(shí)參類型不匹配,或者返回值類型與接收返回值類型不一致時,就需要發(fā)生類型轉(zhuǎn)化。本文主要介紹了C++中常見的四個類型轉(zhuǎn)換,需要的可以參考一下
    2022-12-12
  • C++編程模板匹配超詳細(xì)的識別手寫數(shù)字實(shí)現(xiàn)示例

    C++編程模板匹配超詳細(xì)的識別手寫數(shù)字實(shí)現(xiàn)示例

    大家好!本篇文章是關(guān)于手寫數(shù)字識別的,接下來我將在這里記錄我的手寫數(shù)字識別的從零到有,我在這里把我自己的寫代碼過程發(fā)出來,希望能幫到和我一樣努力求知的人
    2021-10-10
  • VS2019配置BOOST的方法(v1.70.0庫)

    VS2019配置BOOST的方法(v1.70.0庫)

    這篇文章主要介紹了VS2019配置BOOST的方法(v1.70.0庫),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

康乐县| 汶川县| 临邑县| 唐河县| 南溪县| 德州市| 鹤壁市| 鹤壁市| 调兵山市| 涞水县| 辽宁省| 安福县| 瑞昌市| 温泉县| 山丹县| 即墨市| 丰台区| 云浮市| 凤城市| 平远县| 娱乐| 乌恰县| 宿迁市| 苍梧县| 留坝县| 安义县| 湘潭县| 西畴县| 灵山县| 广东省| 宣威市| 南郑县| 乐清市| 微山县| 社旗县| 兴国县| 德清县| 清苑县| 久治县| 樟树市| 江城|