成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MapReduce矩陣;及快排單鏈表之解答

開發 前端
今日面試題:一個很大的2D矩陣,如果某點的值,由它周圍某些點的值決定,例如下一時刻(i,j) 的值取當前時刻它的8鄰點的平均,那么怎么用MapReduce來實現。

今日面試題:

一個很大的2D矩陣,如果某點的值,由它周圍某些點的值決定,例如下一時刻(i,j) 的值取當前時刻它的8鄰點的平均,那么怎么用MapReduce來實現。

快排單鏈表分析

題目:

快排(QuickSort)單向鏈表(Singly Linked List)。

分析:

思路和數據的快速排序一樣,都需要找到一個pivot元素、或者節點。然后將數組或者單向鏈表劃分為兩個部分,然后遞歸分別快排。

針對數組進行快排的時候,交換交換不同位置的數值,在分而治之完成之后,數據就是排序好的。那么單向鏈表是什么樣的情況呢?除了交換節點值之外,是否有其他更好的方法呢?可以修改指針,不進行數值交換。這可以獲取更高的效率。

在修改指針的過程中,會產生新的頭指針以及尾指針,要記錄下來。在partition之后,要將小于pivot的的部分、pivot、以及大于pivot的部分重新串起來成為一個singly linked list。

在partition時,我們用最后的節點作為pivot。當我們掃描鏈表時,如果節點值大于pivot,將節點移到尾部之后;如果節點小于,保持不變。

在遞歸排序時,我們先調用partition將pivot放到正確的為止并返回pivot,然后,遞歸左邊,遞歸右邊,最后在合成一個單鏈表。

C++實現:

  1. struct node *partition(struct node *head, struct node *end,   
  2.                       struct node **newHead, struct node **newEnd) 
  3.    struct node *pivot = end; 
  4.    struct node *prev = NULL, *cur = head, *tail = pivot; 
  5.  
  6.    while(cur != pivot) 
  7.    { 
  8.        if(cur->data < pivot->data) 
  9.        { 
  10.           if((*newHead) == NULL) 
  11.                (*newHead) = cur; 
  12.            prev = cur;   
  13.            cur = cur->next; 
  14.        } 
  15.        else 
  16.        { 
  17.            if(prev) 
  18.                prev->next = cur->next; 
  19.            structnode *tmp = cur->next; 
  20.            cur->next = NULL; 
  21.            tail->next = cur; 
  22.            tail = cur; 
  23.            cur = tmp; 
  24.        } 
  25.    } 
  26.    if((*newHead) == NULL) 
  27.        (*newHead) = pivot; 
  28.    (*newEnd) = tail; 
  29.   return pivot; 
  30. struct node *quickSortRecur(struct node *head, struct node *end) 
  31.    if(!head || head == end) 
  32.        return head; 
  33.    node *newHead = NULL, *newEnd = NULL; 
  34.   struct node *pivot = partition(head, end, &newHead, &newEnd); 
  35.    if(newHead != pivot) 
  36.    { 
  37.       struct node *tmp = newHead; 
  38.        while(tmp->next != pivot) 
  39.            tmp = tmp->next; 
  40.        tmp->next = NULL; 
  41.        newHead = quickSortRecur(newHead, tmp); 
  42.        tmp = getTail(newHead); 
  43.        tmp->next =  pivot; 
  44.    } 
  45.    pivot->next = quickSortRecur(pivot->next, newEnd); 
  46.    returnn ewHead; 
  47. void quickSort(struct node **headRef) 
  48.    (*headRef) = quickSortRecur(*headRef, getTail(*headRef)); 
  49.    return

原文鏈接:http://www.ituring.com.cn/article/49307

責任編輯:陳四芳 來源: 圖靈社區
相關推薦

2013-10-16 16:15:26

單鏈表

2013-10-15 16:27:51

2013-10-16 16:42:19

矩陣

2021-07-13 07:52:03

Python數據結構

2019-10-31 09:52:02

HadoopJava大數據

2012-02-02 10:21:05

單鏈表nexthead

2014-06-05 08:47:52

Spark 1.0Mapreduce

2022-09-14 15:24:57

typescript快排

2016-10-14 16:52:03

單表關聯數據信息

2021-10-13 06:49:15

時間復雜度快排

2022-03-10 17:02:51

Rust單鏈表數據結構

2009-11-09 10:42:53

ibmdwRational

2022-02-15 08:25:22

hash表快排二分查找

2014-11-10 15:02:21

大數據云計算Hadoop

2009-07-29 10:03:24

思科網絡管理Cisco

2009-04-13 11:42:29

IBMdWRational

2009-06-14 22:28:14

ibmdwWebSphere

2010-04-27 18:24:56

Oracle常見問題

2019-11-01 15:33:00

JavaScript面試開發

2011-05-19 16:30:38

軟件測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文字幕在线视频 | 一区二区三区网站 | 97在线观视频免费观看 | 天天久久 | 仙人掌旅馆在线观看 | zzzwww在线看片免费 | 久久久久国产精品免费免费搜索 | 国产成人亚洲精品自产在线 | 成人一级毛片 | 国产免费一区二区 | 涩涩视频大全 | 国产精品久久久久久久久久久久久 | 成人在线免费视频 | 午夜精品网站 | 亚洲综合一区二区三区 | 午夜激情免费 | 免费一级欧美在线观看视频 | 欧美日韩精品免费 | 成人免费视频 | 国产美女视频黄 | 一级毛片视频在线观看 | 久久不卡日韩美女 | 久久激情视频 | 亚洲男人的天堂网站 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 国产精品一区二区在线 | 婷婷在线视频 | 成人黄色电影在线播放 | 亚洲一区在线观看视频 | 欧洲亚洲视频 | 日本精品一区二区三区四区 | 在线观看国产网站 | 国产成人精品午夜 | 黄a在线观看 | 欧美色综合天天久久综合精品 | 成人av观看 | 精品视频一区二区在线观看 | 亚洲色欧美另类 | 日本免费在线看 | 中文字幕第九页 | 国产精品久久久久一区二区三区 |