精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:手寫歸并排序、快排能做到嗎?我:小Case!

開發 前端
遞歸這一思想至關重要,因為很多算法都是基于遞歸展開的。其中最經典的就是分治算法,應該算是遞歸這一思想最經典的應用,也是面試中的常客。

[[407867]]

大家好,我是梁唐。

在之前的文章當中,我們通過海盜分金幣問題詳細講解了遞歸這個方法。

我們可以認為在遞歸的過程當中,我們通過函數自己調用自己,將大問題轉化成了小問題,因此簡化了編碼以及建模。

遞歸這一思想至關重要,因為很多算法都是基于遞歸展開的。其中最經典的就是分治算法,應該算是遞歸這一思想最經典的應用,也是面試中的常客。

而分治算法當中的經典應用就是歸并排序以及快速排序這兩大排序算法,所以今天我們就一起來深入探討一下這兩個排序算法。從它們理解分治算法,再反過來加深對遞歸這一思想的理解。好了,我們廢話不多說,開始進入正題吧。

歸并排序

歸并排序的代碼看起來有些復雜,其實它的思路非常簡單,它的核心原理只有一句話:將兩個有序數組歸并在一起的復雜度為。

歸并操作

所謂歸并,也就是把兩個有序數組里的元素合并在到同一個數組當中,并且保持數組的有序性。

我們舉個例子,假設我們有兩個數組a和b,我們要把它們當中的元素都放入數組c當中,并且還要保證數組c中的元素依然是有序的。

  1. a = [1, 4, 6] 
  2. b = [2, 4, 5] 
  3. c = [] 

我們用i和j分別表示a和b兩個數組的下標,一開始的時候i, j = 0, 0。我們不停地比較a和b數組i和j位置大小關系,將小的那個數填入c。

填入一個數之后:

  1. i = 1 
  2. j = 0 
  3. a = [1, 4, 6] 
  4. b = [2, 4, 5] 
  5. c = [1] 

填入兩個數之后:

  1. i = 1 
  2. j = 1 
  3. a = [1, 4, 6] 
  4. b = [2, 4, 5] 
  5. c = [1, 2] 

我們重復以上步驟,直到a和b數組當中所有的數都填入c數組為止。

關于這個操作的代碼非常容易寫,我這里提供一個Python版本的。主要是Python的代碼和偽代碼比較接近,比較容易理解。

  1. def merge(a, b): 
  2.   i, j = 0, 0 
  3.   c = [] 
  4.   while i < len(a) or j < len(b): 
  5.     # 判斷a數組是否已經全部放入 
  6.     if i == len(a): 
  7.       c.append(b[j]) 
  8.       j += 1 
  9.       continue 
  10.     elif j == len(b): 
  11.       c.append(a[i]) 
  12.       i += 1 
  13.       continue 
  14.     # 判斷大小 
  15.     if a[i] <= b[j]: 
  16.       c.append(a[i]) 
  17.       i += 1 
  18.     else
  19.       c.append(b[j]) 
  20.       j += 1 
  21.   return c 

從上面的代碼我們也能看出來,這個過程雖然簡單,但是寫起來還是有點麻煩的。

因為我們還需要判斷a和b是否為空,這里有一個簡化代碼的優化,就是在a和b兩個數組當中插入一個極大值作為“標兵”。

這個標兵設置成正無窮大的數,這樣當a數組當中其他元素都彈出之后。由于標兵大于b數組當中除了標兵之外其他所有的數,就可以保證a數組永遠不會越界,如此就可以簡化很多代碼了(前提,a和b數組當中不存在和標兵一樣大的數)。

我們來看簡化之后的代碼:

  1. def merge(a, b): 
  2.   i, j = 0, 0 
  3.   # 插入標兵 
  4.   a.append(MAXINT) 
  5.   b.append(MAXINT) 
  6.   c = [] 
  7.   # 由于插入了標兵,所以長度判斷的時候需要-1 
  8.   while i < len(a)-1 or j < len(b)-1: 
  9.     if a[i] <= b[j]: 
  10.       c.append(a[i]) 
  11.       i += 1 
  12.     else
  13.       c.append(b[j]) 
  14.       j += 1 
  15.   return c 

排序操作

歸并操作很好理解,接下來的問題是我們怎么利用歸并數組的操作來排序呢?

自己想可能不一定想得出來,但只要我們利用上遞歸的思想其實很簡單。

這里我們不妨來思考一下歸并的逆操作,我們要讓完整的數組有序,首先需要將這個數組一分為二,這兩個部分都各自有序。

一分為二之后,我們化零為整,把其中的一個部分看成是整體,再使用同樣的方法繼續一分為二。這樣一直拆分下去,直到最后拆分之后的數組只剩下一個元素,由于單個元素的數組是天然有序的。所以就滿足了歸并操作的條件了,這時候我們再一層層歸并回來,化零為整,得到完整的有序數組。

我這樣說可能有些枯燥,不妨來看一個例子。

  1.   [4, 1, 3, 2] 
  2.      /        \ 
  3.   [4, 1]    [3, 2] 
  4.   /    \    /    \ 
  5. [4]   [1]  [3]   [2] 
  6.   \    /     \   / 
  7.   [1, 4]     [2, 3] 
  8.      \        / 
  9.     [1, 2, 3, 4] 

我們首先把[4, 1, 3 ,2]這個數組一分為二,得到[4, 1]和[3, 2]。我們把[4, 1]看成是完整的數組再繼續拆分,得到[4]和[1]。這兩個數組里都只有一個元素,天然有序,所以就可以使用歸并操作了。歸并之后得到[1, 4],再和[3, 2]同樣操作之后得到的[2, 3]歸并,這樣一層層歸并回來,就得到了有序的[1, 2, 3, 4]了。

如果還不理解,還可以參考一下下面的動圖。

最后,我們來試著用代碼來實現。

之前我曾經在面試的時候被要求在白板上寫過歸并排序,當時我用的C++覺得編碼還有一定的難度。現在,當我用習慣了Python之后,我感覺編碼難度降低了很多。因為Python支持許多數組相關的高級操作,比如切片,變長等等。整個歸并排序的代碼不超過20行,我們一起來看下代碼:

  1. def merge_sort(arr): 
  2.     n = len(arr) 
  3.     # 當長度小于等于1,說明天然有序 
  4.     if n <= 1: 
  5.         return arr 
  6.     mid = n // 2 
  7.     # 通過切片將數組一分為二,遞歸排序左邊以及右邊部分 
  8.     L, R = merge_sort(arr[: mid]), merge_sort(arr[mid: ]) 
  9.     n_l, n_r = len(L), len(R) 
  10.  
  11.     # 數組當中插入標兵 
  12.     L.append(sys.maxsize) 
  13.     R.append(sys.maxsize) 
  14.     new_arr = [] 
  15.     i, j = 0, 0 
  16.  
  17.     # 歸并已經排好序的L和R 
  18.     while i < n_l or j < n_r: 
  19.         if L[i] <= R[j]: 
  20.             new_arr.append(L[i]) 
  21.             i += 1 
  22.         else
  23.             new_arr.append(R[j]) 
  24.             j += 1 
  25.     return new_arr 

代碼很簡單,但是理解起來對于新手來說可能還是有點難。這里的關鍵點在于對遞歸的認識和理解,對于初學者我們可以忘記遞歸這回事,就把自身這個函數看成是一個獨立的函數,先忘記它是我們編寫的,只需要關注它的輸入和輸出,利用它的輸出完成我們想要的操作。

比如在這段代碼當中merge_sort函數可以完成一個數組的排序,雖然這個函數是我們編寫的,但是我們可以先假設它已經開發好了,可以實現排序了。所以我們直接把數組一分為二,然后分別調用merge_sort就得到了兩個有序的子數組了。

得到兩個有序的子數組之后,我們要做的就剩下很簡單的歸并操作了。大家可以對比一下,歸并排序的代碼和歸并這個操作的代碼非常非常地相似,唯一的差別就在于歸并排序當中多了遞歸調用的部分。

歸并排序是用來理解遞歸以及理解分治這個思想非常好的例子,建議新手多寫幾遍多多練習。

快速排序

快速排序同樣利用了分治的思想,我們每次做一個小的操作,讓數組的一部分變得有序,之后我們通過遞歸,將這些有序的部分組合在一起,達到整體有序。

在歸并排序當中,我們劃分問題的方法是橫向切分,我們直接將數組一分為二,針對這兩個部分分別排序。

快排稍稍不同,它并不是針對數組的橫向切分,而是從問題本身出發的“縱向”切分。在快速排序當中,我們解決的子問題不是對數組的一部分排序,而是提升數組的有序程度。

怎么提升呢?快排的做法非常巧妙,首先會在數組當中尋找一個數,作為標桿。然后,我們利用這個標桿調整數組當中元素的順序。將小于它的放到它的左側,大于它的放到它的右側。這么一個操作結束之后,可以肯定的是,對于我們選定的標桿來說,它所在的位置就是排序之后它應該在的位置。

我們來看個例子:

a = [8, 4, 3, 9, 10, 2, 7]

我們選擇7作為標桿,一輪操作之后可以得到:

a = [2, 4, 3, 7, 9, 10, 8]

接著我們怎么做呢?很簡單,我們只需要針對標桿前面以及標桿后面的部分重復上述操作即可。如果還不明白的同學可以看一下下面這張動圖:

如果用C++寫過快排的同學肯定對于快排的代碼印象深刻,它是屬于典型的原理不難,但是寫起來很麻煩的算法。因為快速排序需要用到兩個下標,寫的時候一不小心很容易寫出bug。

同樣,由于Python當中動態數組的支持非常好,我們可以避免使用下標來實現快排,這樣代碼的可讀性以及編碼難度都要降低很多。

多說無益,我們來看代碼:

  1. def quick_sort(arr): 
  2.     n = len(arr) 
  3.     # 長度小于等于1說明天然有序 
  4.     if n <= 1: 
  5.         return arr 
  6.    
  7.     # pop出最后一個元素作為標桿 
  8.     mark = arr.pop() 
  9.     # 用less和greater分別存儲比mark小或者大的數 
  10.     less, greater = [], [] 
  11.     for x in arr: 
  12.         if x <= mark: 
  13.             less.append(x) 
  14.         else
  15.             greater.append(x) 
  16.     arr.append(mark) 
  17.     return quick_sort(less) + [mark] + quick_sort(greater) 

整個代碼出去注釋,不到15行,我想大家應該都非常容易理解。

最后,我們來分析一下這兩個算法的復雜度,為什么說這兩個算法都是的算法呢?(不考慮快速排序最差情況)這個證明非常簡單,我們放一張圖大家一看就明白了:

上圖是一張遞歸樹的展開圖,無論是歸并排序還是快速排序,在遞歸當中我們都遍歷了整個數組的元素一次,所以復雜度是

雖然隨著遞歸層數的加深,我們把完整的數組也進行了一層層的拆分。但是橫向來看,所有拆分之后的子問題的元素之和仍然是n。所以每一層的遍歷的復雜度仍然是

,這里的n指的是總元素的個數。

所以整個問題的復雜度就是n乘上拆分的層數,我們知道每一次都將數組一分為二。對于長度為n的數組來說,最多可以拆分次,那么整體的復雜度就是

,忽略底數的話可以寫成

當然對于快速排序算法來說,如果數組是倒序的,我們默認取最后一個元素作為標桿的話,我們是無法均分數組的,因為除標桿之外所有的元素都比它大。在這種情況下算法的復雜度會退化到。所以我們說快速排序算法最差復雜度是

到這里,關于歸并排序與快速排序的算法就講完了。這兩個算法并不難,我想學過算法和數據結構的同學應該都有印象,但是在實際面試當中,真正能把代碼寫出來并且沒有明顯bug的實在是不多。我想,不論之前是否已經學會了,回顧一下都是很有必要的吧。

本文轉載自微信公眾號「Coder梁」,可以通過以下二維碼關注。轉載本文請聯系Coder梁公眾號。

 

責任編輯:武曉燕 來源: Coder梁
相關推薦

2021-10-12 07:15:02

歸并排序場景

2009-09-28 10:58:45

招聘

2021-03-01 08:02:55

算法排序操作

2011-04-20 14:29:07

歸并排序

2021-12-02 08:19:06

MVCC面試數據庫

2021-03-01 18:42:02

緩存LRU算法

2021-01-21 07:53:29

面試官Promis打印e

2023-10-09 07:11:03

排序算法序列

2024-09-03 07:58:46

2022-04-06 08:58:39

歸并排序Go算法

2021-09-28 12:36:02

Linux系統進程

2020-07-02 07:52:11

RedisHash映射

2021-11-24 10:10:32

axios前端攔截器

2021-08-31 15:19:16

美團面試快排

2020-11-10 13:47:29

String源碼長度限制

2022-08-02 06:31:32

Java并發工具類

2022-07-26 08:40:42

Java并發工具類

2023-06-05 07:57:53

Kafka消息事務消息

2022-06-24 06:43:57

線程池線程復用

2020-02-25 16:56:02

面試官有話想說
點贊
收藏

51CTO技術棧公眾號

狠狠色噜噜狠狠狠狠97| 岛国av在线一区| 日韩中文字幕在线视频播放| 亚洲午夜精品一区| 亚洲妇熟xxxx妇色黄| 99久精品国产| 国产精品一区二区三区毛片淫片 | 男人靠女人免费视频网站| 日本一二三区在线视频| 九九久久精品视频| 69视频在线播放| 91久久国产综合| 校花撩起jk露出白色内裤国产精品| 欧美日韩一区二区三区不卡| 国产精品一色哟哟| 欧美人xxx| 久久综合资源网| 97se国产在线视频| 亚洲视频 欧美视频| 欧美69视频| 国产一区二区三区三区在线观看| 成人啪啪18免费游戏链接| 日韩三区在线| 五月激情六月综合| 400部精品国偷自产在线观看| 四虎影院在线播放| 懂色av一区二区夜夜嗨| 国产精品日本精品| 久久久久女人精品毛片九一| 欧美精选在线| 日韩在线视频观看| free性中国hd国语露脸| 免费欧美网站| 欧美乱熟臀69xxxxxx| 欧美xxxxx在线视频| 51漫画成人app入口| 亚洲四区在线观看| 亚洲欧洲日韩精品| 成人在线免费电影| 国产亚洲一区二区三区四区| 国产一区二区精品在线| 亚洲成人一二三区| 国内精品视频一区二区三区八戒| 国产精品久久久久久av下载红粉| 久久久久久久极品| 在线日韩视频| 久久久久久久久久久免费精品| 成人一级黄色大片| 99热国内精品| 北条麻妃久久精品| 大地资源高清在线视频观看| 日韩免费视频| 中文字幕综合一区| 来吧亚洲综合网| 图片小说视频色综合| 色婷婷久久一区二区| 一二三四在线观看视频| 日韩成人精品一区| 中文字幕久热精品在线视频| 少妇一级黄色片| 色婷婷综合网| 久久影院资源网| 国产女人18水真多毛片18精品 | 欧美黄色免费网址| 怡红院在线观看| 亚洲一区二区三区不卡国产欧美| 日韩不卡一二区| 伦理在线一区| 欧美色视频日本版| 另类小说色综合| 羞羞视频在线观看一区二区| 91精品国产综合久久福利软件 | 99热精品一区二区| 欧美日韩国产精品一卡| 成人动漫在线免费观看| 国产精品久久久久久久久免费丝袜| 一本久久a久久精品vr综合| 欧美a在线看| 亚洲伊人色欲综合网| 欧美日韩在线一| 久久野战av| 这里是久久伊人| 中文字幕一区二区三区人妻在线视频| 国产三级精品三级在线观看国产| 日韩成人在线视频网站| 亚洲日本精品视频| 欧美成人久久| 欧美又大又粗又长| 一级成人免费视频| 粉嫩一区二区三区在线看| 精品无人区一区二区三区竹菊 | 久久午夜色播影院免费高清| 亚洲欧洲精品在线 | 天天操天天干天天插| 国产亚洲午夜高清国产拍精品| 亚洲欧美一区二区原创| caoprom在线| 欧洲精品一区二区| 久久久久国产免费| 成人黄色小视频| 欧美激情在线狂野欧美精品| 久久久黄色大片| 国产一区二区在线免费观看| 久久久久久久久久码影片| 免费黄网站在线| 婷婷成人激情在线网| 亚洲免费999| 日韩欧美天堂| 久久97久久97精品免视看| 波多野结衣家庭主妇| 高清视频一区二区| 一本一本a久久| 都市激情亚洲综合| 日韩欧美亚洲一区二区| 九一在线免费观看| 久久xxxx| 国产精品一区二区欧美黑人喷潮水| 成人性爱视频在线观看| 香港成人在线视频| 亚洲三级在线视频| 成人在线国产| 日韩男女性生活视频| 日批免费在线观看| 亚洲精品免费在线播放| 亚洲精品午夜在线观看| 九九综合在线| 97不卡在线视频| 亚洲欧美国产高清va在线播放| 亚洲国产精品成人综合色在线婷婷| 精品国产一区三区| 一本一道久久a久久| 成年人精品视频| 亚洲天堂男人网| 欧美国产一区二区| 免费av网址在线| 亚洲伊人春色| 欧美一区二区三区精品电影| 色婷婷视频在线| 亚洲影院久久精品| 五月天丁香社区| 国内在线观看一区二区三区| 91系列在线观看| 精品孕妇一区二区三区| 欧美高清性hdvideosex| 青青草自拍偷拍| 免费成人美女在线观看.| 日本精品一区| 日韩经典一区| 中文字幕成人精品久久不卡| 最近中文字幕在线免费观看| 国产亚洲成aⅴ人片在线观看| 国产成人久久777777| 亚洲激情77| 国产精品海角社区在线观看| 久久久久久久影视| 欧美视频三区在线播放| 99精品全国免费观看| 久久精品国产秦先生| 亚洲国产欧洲综合997久久 | 手机免费看av| 免费久久99精品国产| 亚洲精美视频| 成人黄色91| 欧美激情视频免费观看| 五月婷在线视频| 一本久久a久久免费精品不卡| 久操视频免费看| 奇米影视一区二区三区小说| 午夜欧美性电影| www.欧美| 精品中文字幕在线2019| 天天操天天操天天操| 色综合天天做天天爱| www亚洲色图| 黑人巨大精品欧美黑白配亚洲| 一二三四中文字幕| 卡通动漫国产精品| 国产精品白嫩美女在线观看| 在线视频91p| 日韩三级.com| 日韩欧美成人一区二区三区| 久久精品夜色噜噜亚洲a∨| 一区二区在线免费看| 欧美精品91| 欧美日韩喷水| 精品视频国内| 青青a在线精品免费观看| aaa在线观看| 日韩精品综合一本久道在线视频| 久久99精品波多结衣一区| 久久久高清一区二区三区| 午夜xxxxx| 先锋影音久久久| 最新中文字幕久久| 欧美a大片欧美片| 成人免费在线视频网站| 欧美调教sm| 久久久精品电影| 欧美孕妇孕交| 欧美一级理论片| 樱花视频在线免费观看| 亚洲一区二区在线播放相泽 | 亚洲天堂久久久久久久| 亚洲精品乱码久久久久久不卡 | 中国一级特黄录像播放| 蜜臀久久99精品久久久画质超高清 | 亚洲国产综合网| 欧美日韩亚洲综合在线 | 国精产品一区一区| av在线免费不卡| 91香蕉视频免费看| 日韩国产高清在线| 成人午夜免费在线| 综合一区av| 亚洲欧美日韩另类精品一区二区三区 | 亚洲调教视频在线观看| 一级日韩一区在线观看| 亚洲黄页在线观看| 国产精选一区二区| 国产免费区一区二区三视频免费| 国产成人在线亚洲欧美| 国产偷倩在线播放| 久久国产精品久久久| 91露出在线| 亚洲无亚洲人成网站77777| 欧美自拍偷拍一区二区| 欧美一二三区在线观看| 亚洲天堂999| 欧美午夜精品久久久久久孕妇| 久久免费激情视频| 亚洲aⅴ怡春院| 男女免费视频网站| 亚洲黄一区二区三区| 久久久精品少妇| 国产精品久久久久久户外露出| 日韩一级视频在线观看| av亚洲产国偷v产偷v自拍| www男人天堂| 成人午夜激情视频| 午夜男人的天堂| 丁香亚洲综合激情啪啪综合| 性久久久久久久久久久久久久| 精品亚洲欧美一区| 中文av字幕在线观看| 另类小说综合欧美亚洲| 欧美男女交配视频| 捆绑调教一区二区三区| 潘金莲激情呻吟欲求不满视频| 免费视频最近日韩| 艹b视频在线观看| 麻豆国产精品视频| 91精品999| 久草这里只有精品视频| 婷婷激情小说网| 国产suv精品一区二区三区| 岛国大片在线免费观看| 成人激情小说网站| 精品人妻一区二区免费视频| 99riav一区二区三区| 国产精品成人一区二区三区电影毛片 | 国产精品久久久久久久美男| 成人日韩av| 国产自摸综合网| 欧美影院视频| 国产欧美日韩综合精品二区| 亚洲成aⅴ人片久久青草影院| 欧美精品七区| 日韩高清欧美| 人人妻人人澡人人爽精品欧美一区| 亚洲精品二区三区| 妞干网在线观看视频| 美女爽到呻吟久久久久| 99热一区二区| 丁香婷婷综合网| 黄色a一级视频| 中文字幕中文字幕在线一区 | 中文字幕在线国产| 91免费国产在线观看| 1024手机在线观看你懂的| 亚洲色图在线播放| 亚洲天堂日韩av| 色av成人天堂桃色av| 一级做a爱片久久毛片| 精品国产91乱码一区二区三区 | 不卡伊人av在线播放| tube8在线hd| 国产精品黄色影片导航在线观看| 91视频成人| 久久亚洲午夜电影| 国产精品成久久久久| 国产手机免费视频| 日韩电影免费一区| 蜜臀av粉嫩av懂色av| 日本一区二区三区高清不卡| 欧美日韩一级在线观看| 91成人在线免费观看| 国产高清视频免费观看| 亚洲深夜福利视频| 青草视频在线免费直播| 国产精品国产亚洲伊人久久| av成人男女| 中文字幕一区二区三区精彩视频 | 亚洲女娇小黑人粗硬| 中文字幕中文字幕在线中一区高清 | 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 欧美一区二区播放| 黄视频在线观看免费| 欧美高清激情视频| 91成人小视频| 日本一区二区免费看| 亚洲大片av| 青娱乐精品在线| 日本一区二区免费在线观看视频 | 中文在线免费| 国产精品久久久av| 伊人久久综合影院| 欧美在线一区视频| 国产精品亚洲专一区二区三区| 日本午夜精品视频| 色婷婷精品久久二区二区蜜臀av| 蜜桃视频久久一区免费观看入口| 日韩在线精品视频| 在线成人视屏| 欧美二区在线| 99热在线精品观看| 风韵丰满熟妇啪啪区老熟熟女| 1024成人网| 亚洲网站在线免费观看| 亚洲欧美在线x视频| 国产美女精品写真福利视频| av在线不卡观看| 午夜激情一区| 自拍视频第一页| 亚洲理论在线观看| av网站免费大全| 免费99精品国产自在在线| 国产精品一站二站| 特级黄色录像片| 韩国一区二区三区| 亚洲波多野结衣| 91精品国产综合久久精品性色| 日本在线看片免费人成视1000| 国产精品成人在线| 成人一二三区| 久久久久久蜜桃一区二区| 国产精品入口麻豆原神| 中文字幕久久熟女蜜桃| 色婷婷av一区二区三区久久| 九九热这里有精品| 亚洲视频sss| 国产一区二区三区四区五区美女 | 色中色一区二区| 每日更新在线观看av| 国产精品高清在线观看| 久久激情电影| 樱花草www在线| 亚洲综合另类小说| 熟妇高潮一区二区高潮| 欧美在线激情网| 精品国产网站| 制服丝袜中文字幕第一页| 亚洲啪啪综合av一区二区三区| 国产三级午夜理伦三级| 久久99精品久久久久久琪琪| 北条麻妃在线一区二区免费播放 | 免费福利视频一区二区三区| 欧美亚洲另类在线一区二区三区| 日日夜夜一区二区| 久久久久亚洲AV成人无在| 91精品国产综合久久小美女 | 日韩av免费网站| 欧美电影《睫毛膏》| 女人扒开双腿让男人捅| 五月激情六月综合| 888av在线| 99精品国产高清一区二区| 9色精品在线| 成人一级片免费看| 日韩欧美精品在线视频| 亚洲综合电影| 成年人免费观看的视频| www.在线欧美| 亚洲av无码乱码国产精品fc2| 久久久国产影院| 在线视频亚洲专区| 色哟哟免费视频| 欧美性猛交xxxx黑人猛交| 美女黄视频在线观看| 国产在线欧美日韩| 看电视剧不卡顿的网站| 日本一级一片免费视频| 国产一区二区三区毛片| 国产精品网址| 香蕉视频999| 精品久久久久人成| wwwav在线| 日本高清久久一区二区三区| 粉嫩绯色av一区二区在线观看| 欧美一级黄视频| 97超级碰碰人国产在线观看|