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

除了冒泡排序,你知道Python內(nèi)建的排序算法嗎?

開發(fā) 開發(fā)工具 后端 算法
對于編程算法,可能很多讀者在學(xué)校第一個(gè)了解的就是冒泡排序,但是你真的知道 Python 內(nèi)建排序算法 list.sort() 的原理嗎?

對于編程算法,可能很多讀者在學(xué)校***個(gè)了解的就是冒泡排序,但是你真的知道 Python 內(nèi)建排序算法 list.sort() 的原理嗎?它使用的是一種快速、穩(wěn)定的排序算法 Timsort,其時(shí)間復(fù)雜度為 O(n log n),該算法的目標(biāo)在于處理大規(guī)模真實(shí)數(shù)據(jù)。

Timsort 是一種對真實(shí)數(shù)據(jù)非常有效的排序算法。Tim Peters 在 2001 年為 Python 編程語言創(chuàng)造了 Timsort。Timsort 首先分析它要排序的列表,然后基于該分析選擇合理方案。

Timsort 自發(fā)明以來,就成為 Python、Java 、Android 平臺(tái)和 GNU Octave 的默認(rèn)排序算法。

Timsort

圖源:http://bigocheatsheet.com/

Timsort 的排序時(shí)間與 Mergesort 相近,快于其他大多數(shù)排序算法。Timsort 實(shí)際上借鑒了插入排序和歸并排序的方法,后文將詳細(xì)介紹它的具體過程。

Peters 設(shè)計(jì) Timsort 是為了利用大量存在于現(xiàn)實(shí)數(shù)據(jù)集中的有序元素,這些有序元素被稱為「natural runs」。總而言之,Timsort 會(huì)先遍歷所有數(shù)據(jù)并找到數(shù)據(jù)中已經(jīng)排好序的分區(qū),且每一個(gè)分區(qū)可以稱為一個(gè) run,***再按規(guī)則將這些 run 歸并為一個(gè)。

數(shù)組中元素少于 64 個(gè)

如果排序的數(shù)組中元素少于 64 個(gè),那么 Timsort 將執(zhí)行插入排序。插入排序是對小型列表最有效的簡單排序,它在大型列表中速度很慢,但是在小型列表中速度很快。插入排序的思路如下:

  • 逐個(gè)查看元素
  • 通過在正確的位置插入元素來建立排序列表

下面的跟蹤表說明了插入排序如何對列表 [34, 10, 64, 51, 32, 21] 進(jìn)行排序的:

在這個(gè)示例中,我們將從左向右開始排序,其中黑體數(shù)字表示新的已排序子數(shù)組。在原數(shù)組每一個(gè)元素的排序中,它會(huì)從右到左對比已排序子數(shù)組,并插入適當(dāng)?shù)奈恢谩S脛?dòng)圖來說明插入排序:

天然有序的區(qū)塊:run

如果列表大于 64 個(gè)元素,則 Timsort 算法首先遍歷列表,查找「嚴(yán)格」升序或降序的部分(Run)。如果一個(gè)部分遞減,Timsort 將逆轉(zhuǎn)這個(gè)部分。因此,如果 run 遞減,則如下圖所示(run 用粗體表示):

如果沒有遞減,則如下圖所示:

minrun 的大小是根據(jù)數(shù)組大小確定的。Timsort 算法選擇它是為了使隨機(jī)數(shù)組中的大部分 run 變成 minrun。當(dāng) run N 的長度等于或略小于 2 的倍數(shù)時(shí),歸并 2 個(gè)數(shù)組更加高效。Timsort 選擇 minrun 是為了確保 minrun 等于或稍微小于 2 的倍數(shù)。

該算法選擇 minrun 的范圍為 32 ~ 64。當(dāng)除以 minrun 時(shí),使原始數(shù)組的長度等于或略小于 2 的倍數(shù)。

如果 run 的長度小于 minrun,則計(jì)算 minrun 減去 run 的長度。我們可以將 run 之外的新元素(minrun - run 個(gè))放到 run 的后面,并執(zhí)行插入排序來創(chuàng)建新的 run,這個(gè)新的 run 長度和 minrun 相同。

如果 minrun 是 63,而 run 的長度是 33,那么可以獲取 63 - 33 = 30 個(gè)新元素。然后將這 30 個(gè)新元素放到 run 的末尾并作為新的元素,所以 run 的第 34 個(gè)元素 run[33] 有 30 個(gè)子元素。***只需要對后面 30 個(gè)元素執(zhí)行一個(gè)插入排序就能創(chuàng)建一個(gè)長度為 63 的新 run。

在這一部分完成之后,現(xiàn)在應(yīng)該在一個(gè)列表中有一系列已排序的 run。

歸并

Timsort 現(xiàn)在需要執(zhí)行歸并排序來合并 run,需要確保在歸并排序的同時(shí)保持穩(wěn)定和平衡。為了保持穩(wěn)定,兩個(gè)等值的元素不應(yīng)該交換,這不僅保持了它們在列表中的原始位置,而且使算法更快。

當(dāng) Timsort 搜索到 runs 時(shí),它們會(huì)被添加到堆棧中。一個(gè)簡單的堆棧是這樣的:

簡單的堆棧

想象一堆盤子。你不能從底部取盤子,必須從頂部取,堆棧也是如此。

當(dāng)歸并不同的 run 時(shí),Timsort 試圖平衡兩個(gè)相互矛盾的需求。一方面,我們希望盡可能地延遲歸并,以便利用之后可能出現(xiàn)的模式。但我們更希望盡快歸并,以利用剛才發(fā)現(xiàn)的在內(nèi)存層級中仍然排名很高的 run。我們也不能「過分」延遲合并,因?yàn)樗涀∥春喜⒌倪\(yùn)行需要消耗內(nèi)存,而堆棧的大小是固定的。

為了得到折衷方案,Timsort 追蹤堆棧上最近的三個(gè)項(xiàng),并為這些堆棧項(xiàng)創(chuàng)建了兩個(gè)必須保持為 True 的規(guī)則:

  • A > B + C
  • B > C

其中 A、B 和 C 是堆棧中最近的三個(gè)項(xiàng)。

用 Tim Peters 自己的話來說:

一個(gè)好的折衷方案是在堆棧項(xiàng)上維護(hù)兩個(gè)不變量,其中 A、B 和 C 是最右邊三個(gè)還未歸并片段的長度。

通常,將不同長度的相鄰 run 歸并在一起是很難的。更困難的是還必須要保持穩(wěn)定。為了解決這個(gè)問題,Timsort 設(shè)置了臨時(shí)內(nèi)存。它將兩個(gè) run 中較小的(同時(shí)調(diào)用 runA 和 runB)放在這個(gè)臨時(shí)內(nèi)存中。

GALLOPING(飛奔模式)

當(dāng) Timsort 歸并 A 和 B 時(shí),它注意到一個(gè) run 已經(jīng)連續(xù)多次「獲勝」。如果 run A 的數(shù)值完全小于 run B,那么 run A 會(huì)回到原始位置。歸并這兩個(gè) run 會(huì)耗費(fèi)巨大工作量,而且還不會(huì)取得任何效果。

通常情況下,數(shù)據(jù)會(huì)有一些預(yù)設(shè)的內(nèi)部結(jié)構(gòu)。Timsort 假設(shè),如果 run A 中的值大多低于 run B 的值,那么 A 的值可能就會(huì)小于 B。

然后 Timsort 將進(jìn)入飛奔模式。Timsort 不是檢查 A[0] 和 B[0],而是二分法搜索 B[0] 在 A[0] 中的合理位置。這樣,Timsort 可以將 A 的整個(gè)部分移動(dòng)到合適的位置。然后,Timsort 在 B 中搜索 A[0] 的適當(dāng)位置。然后,Timsort 將立即移動(dòng)整個(gè) B 到合適的位置。

Timsort 檢查 B[0](值為 5),并使用二分法搜索查找其 A 中的正確位置。

現(xiàn)在 B[0] 在 A 列表的后面,Timsort 檢查 B 的正確位置是否有 A[0](即 1),所以我們要看 1 的位置。這個(gè)數(shù)在 B 的前部,現(xiàn)在我們知道 B 在 A 的后邊,A 在 B 的前邊。

如果 B[0] 的位置非常接近 A 的前端(反之亦然),那么這個(gè)操作就沒必要了。Timsort 也會(huì)注意到這一點(diǎn),并通過增加連續(xù)獲得 A 或 B 的數(shù)量提高進(jìn)入飛奔模式的門檻。如果飛奔模式合理,Timsort 使它更容易重新進(jìn)入該模式。

簡而言之,Timsort 做了兩件非常好的事情:

  • 具有預(yù)設(shè)的內(nèi)部結(jié)構(gòu)的數(shù)組具有良好的性能
  • 能夠保持穩(wěn)定的排序

在此之前,為了實(shí)現(xiàn)穩(wěn)定的排序,必須將列表中的項(xiàng)壓縮為整數(shù),并將其排序?yàn)樵M數(shù)組。

代碼

下面的源代碼基于我和 Nanda Javarma 的工作。源代碼并不完整,也不是類似于 Python 的官方 sort() 源代碼。這只是我實(shí)現(xiàn)的一個(gè)簡化的 Timsort,可以對 Timsort 有個(gè)整體把握。此外,Python 中的內(nèi)置 Timsort 算法是在 C 中正式實(shí)現(xiàn)的,因此能獲得更好的性能。

Timsort 的原始源代碼:

https://github.com/python/cpython/blob/master/Objects/listobject.c。

  1. # based off of this code https://gist.github.com/nandajavarma/a3a6b62f34e74ec4c31674934327bbd3 
  2. # Brandon Skerritt 
  3. # https://skerritt.tech 
  4.  
  5. def binary_search(the_array, item, start, end): 
  6.     if start == end: 
  7.         if the_array[start] > item: 
  8.             return start 
  9.         else: 
  10.             return start + 1 
  11.     if start > end: 
  12.         return start 
  13.  
  14.     mid = round((start + end)/ 2) 
  15.  
  16.     if the_array[mid] < item: 
  17.         return binary_search(the_array, item, mid + 1, end) 
  18.  
  19.     elif the_array[mid] > item: 
  20.         return binary_search(the_array, item, start, mid - 1) 
  21.  
  22.     else: 
  23.         return mid 
  24.  
  25. """ 
  26. Insertion sort that timsort uses if the array size is small or if 
  27. the size of the "run" is small 
  28. """ 
  29. def insertion_sort(the_array): 
  30.     l = len(the_array) 
  31.     for index in range(1, l): 
  32.         value = the_array[index] 
  33.         pos = binary_search(the_array, value, 0, index - 1) 
  34.         the_arraythe_array = the_array[:pos] + [value] + the_array[pos:index] + the_array[index+1:] 
  35.     return the_array 
  36.  
  37. def merge(left, right): 
  38.     """Takes two sorted lists and returns a single sorted list by comparing the 
  39.     elements one at a time. 
  40.     [1, 2, 3, 4, 5, 6] 
  41.     """ 
  42.     if not left: 
  43.         return right 
  44.     if not right: 
  45.         return left 
  46.     if left[0] < right[0]: 
  47.         return [left[0]] + merge(left[1:], right) 
  48.     return [right[0]] + merge(left, right[1:]) 
  49.  
  50. def timsort(the_array): 
  51.     runs, sorted_runs = [], [] 
  52.     lenlength = len(the_array) 
  53.     new_run = [the_array[0]] 
  54.  
  55.     # for every i in the range of 1 to length of array 
  56.     for i in range(1, length): 
  57.         # if i is at the end of the list 
  58.         if i == length - 1: 
  59.             new_run.append(the_array[i]) 
  60.             runs.append(new_run) 
  61.             break 
  62.         # if the i'th element of the array is less than the one before it 
  63.         if the_array[i] < the_array[i-1]: 
  64.             # if new_run is set to None (NULL) 
  65.             if not new_run: 
  66.                 runs.append([the_array[i]]) 
  67.                 new_run.append(the_array[i]) 
  68.             else: 
  69.                 runs.append(new_run) 
  70.                 new_run = [] 
  71.         # else if its equal to or more than 
  72.         else: 
  73.             new_run.append(the_array[i]) 
  74.  
  75.     # for every item in runs, append it using insertion sort 
  76.     for item in runs: 
  77.         sorted_runs.append(insertion_sort(item)) 
  78.  
  79.     # for every run in sorted_runs, merge them 
  80.     sorted_array = [] 
  81.     for run in sorted_runs: 
  82.         sorted_array = merge(sorted_array, run) 
  83.  
  84.     print(sorted_array) 
  85.  
  86. timsort([2, 3, 1, 5, 6, 7]) 

Timsort 實(shí)際上在 Python 中已經(jīng)內(nèi)建了,所以這段代碼只充當(dāng)概念解釋。要使用 Timsort,只需在 Python 中寫:

  1. list.sort() 

或者:

  1. sorted(list) 

如果你想掌握 Timsort 的工作方式并對其有所了解,我強(qiáng)烈建議你嘗試自己實(shí)現(xiàn)它!

原文鏈接:

https://hackernoon.com/timsort-the-fastest-sorting-algorithm-youve-never-heard-of-36b28417f399

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2011-04-20 14:07:37

冒泡排序

2023-10-04 00:02:00

本文將從入門到精通,冒泡排序

2023-03-06 08:10:52

數(shù)據(jù)結(jié)構(gòu)算法數(shù)據(jù)

2022-11-21 07:58:10

Java排序冒泡排序

2009-06-05 10:24:37

C#排序排序

2019-10-30 08:53:46

JavaScript冒泡排序選擇排序

2023-03-02 08:15:13

2021-01-21 05:22:36

排序算法選擇

2010-01-11 15:01:55

VB.NET冒泡排序

2020-07-05 09:12:42

java冒泡排序算法

2009-09-10 16:30:11

C#排序函數(shù)

2012-10-31 10:25:52

排序

2009-12-11 16:44:33

PHP冒泡排序

2023-05-05 06:43:13

算法冒泡排序元素

2025-10-17 01:55:00

排序算法快速排序Lomuto

2023-09-26 22:22:30

選擇排序Python

2021-10-14 06:52:47

算法校驗(yàn)碼結(jié)構(gòu)

2009-08-10 16:19:37

C#冒泡排序

2017-03-25 21:13:38

JavaScript排序

2019-10-29 15:09:52

Python貪心算法代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品一二三区| 日韩在线观看一区二区三区| 久久久久久亚洲综合影院红桃| 日韩美女av在线免费观看| 夜夜春很很躁夜夜躁| 色婷婷成人网| 天天色综合天天| 性欧美精品一区二区三区在线播放 | 日韩精品一区二区三区中文 | 手机看片久久久| 成人在线免费观看91| 日韩欧美亚洲一区二区| 亚洲欧美日韩在线一区| 成人污网站在线观看| 五月婷婷丁香花| 麻豆精品新av中文字幕| 欧美精品福利在线| 99久久99久久精品免费看小说.| 亚洲精品黑牛一区二区三区| 欧洲一区二区av| 日韩欧美猛交xxxxx无码| 第一视频专区在线| 成人免费观看视频| 国产精品一区二区久久| 久久99久久久| 热久久天天拍国产| 日韩毛片在线观看| 国产国语老龄妇女a片| 台湾天天综合人成在线| 一本高清dvd不卡在线观看| 日韩精品免费一区| 麻豆系列在线观看| 国产日韩欧美不卡| 精品国产乱码久久久久久108| 国产美女自慰在线观看| 日本伊人色综合网| 91精品国产成人| 少妇影院在线观看| 91蜜臀精品国产自偷在线| 精品性高朝久久久久久久| 无码国产精品一区二区高潮| 精品三级在线| 91高清视频在线| 能在线观看的av| 僵尸再翻生在线观看免费国语| 亚洲天堂成人在线观看| 亚洲精品高清视频| 成黄免费在线| 久久亚洲免费视频| 免费日韩av电影| 天堂av中文字幕| 成人高清av在线| 国产精品我不卡| 亚洲国产日韩在线观看| 国产成人啪午夜精品网站男同| 成人免费淫片aa视频免费| 中文字幕天堂在线| 日韩黄色免费网站| 国产精品爽黄69| 美女黄页在线观看| 免费观看在线综合| 国产精品久久久久久五月尺| 中文字幕 视频一区| 美女精品一区二区| 国产伊人精品在线| 国产高清免费av| 国产宾馆实践打屁股91| 国产精品一区二区三区观看| 黄色一级大片在线免费看国产| www.日韩av| 欧美日韩一区二区三区在线视频| 理论视频在线| 国产精品初高中害羞小美女文| 日韩 欧美 自拍| 国产天堂在线播放视频| 亚洲18女电影在线观看| 黄色一级在线视频| 久久精品女人天堂av免费观看| 欧美天堂亚洲电影院在线播放| 一级黄色在线播放| 日韩成人在线观看视频| 欧美成人性福生活免费看| 美女久久久久久久久| 精品一区三区| 按摩亚洲人久久| 久久久久久久久久久久久久久久久| 在线欧美视频| 欧美一级高清免费| 亚洲字幕av一区二区三区四区| 国产精品亚洲专一区二区三区 | 国产成人av电影在线| 国产蜜臀av在线一区二区三区| 久久99精品久久久久久三级| 日本网站在线看| 国产丝袜在线播放| 日韩欧美国产视频| wwww.国产| 免费观看亚洲视频大全| 日韩av在线免费观看| 亚洲第一综合网| 91精品啪在线观看国产81旧版| 久久久久久久久国产精品| 国产精品熟女视频| 国产一区二区三区精品视频| 精品高清视频| 成人影欧美片| 欧美特黄级在线| 一区二区久久精品| 美国十次av导航亚洲入口| 夜夜嗨av一区二区三区四区| 麻豆一区产品精品蜜桃的特点| 久久久久国产精品午夜一区| 成人精品一区二区三区电影黑人 | 亚洲国产精久久久久久| 国产精品成人在线视频| 在线观看亚洲| 国产精品永久免费在线| 天堂在线中文网| 亚洲欧洲三级电影| 精品一区二区中文字幕| 国产一区二区av在线| 亚洲日本aⅴ片在线观看香蕉| 神马午夜精品91| 久久先锋资源| 精品免费视频123区| 黄网站在线播放| 色综合天天综合网天天狠天天| 韩国三级在线看| 久久高清免费| 国产精品高清在线| 天堂中文资源在线观看| 亚洲黄色免费网站| 在线黄色免费观看| 九热爱视频精品视频| 欧美高清第一页| 国产一区二区波多野结衣| 久久―日本道色综合久久| 日本手机在线视频| 视频一区在线| 久热精品视频在线观看| 在线观看免费视频一区| 久久久99精品久久| 国产青青在线视频| 国产96在线亚洲| 欧美高跟鞋交xxxxhd| 国产女主播福利| 亚洲欧美在线高清| 深夜黄色小视频| 日韩欧美电影| 国产欧美久久一区二区| 成人亚洲性情网站www在线观看| 日韩欧美一区二区三区久久| 欧美成人三级伦在线观看| 99热精品在线| 国产亚洲一区二区三区在线播放| av漫画网站在线观看| 精品捆绑美女sm三区| 久久精品免费在线| 99久久免费精品高清特色大片| 国产a级片网站| 久久久久97| 欧美一级黄色网| 日本ー区在线视频| 日本韩国一区二区三区视频| 谁有免费的黄色网址| 日韩 欧美一区二区三区| 色吧亚洲视频| 成人影院网站ww555久久精品| 久久久999精品免费| 国产按摩一区二区三区| 一区二区三区欧美亚洲| 青青草视频网站| 国产婷婷精品| 日韩福利二区| www999久久| 欧美贵妇videos办公室| 天堂在线资源8| 色噜噜夜夜夜综合网| 国产主播av在线| 国产一级精品在线| 拔插拔插海外华人免费| 国产免费av一区二区三区| 国产精品看片资源| 成人短视频在线| 亚洲激情成人网| 瑟瑟视频在线免费观看| 亚洲精品日日夜夜| 国产黄色三级网站| 免费美女久久99| h无码动漫在线观看| 西瓜成人精品人成网站| 欧美一级xxx| 欧美变态另类刺激| 国产精品免费99久久久| 91精品一区二区| av漫画网站在线观看| 中文字幕v亚洲ⅴv天堂| 99久久精品无免国产免费| 午夜欧美一区二区三区在线播放| 国产黄色大片免费看| 国产传媒一区在线| 成人小视频在线看| 中文字幕乱码亚洲无线精品一区| 国产一区免费观看| 亚洲福利影视| 51精品国产黑色丝袜高跟鞋| 蜜桃视频在线观看www社区 | 性久久久久久久久久久久 | 国产精品午夜久久| 年下总裁被打光屁股sp| 日韩中文字幕亚洲一区二区va在线| 女同性恋一区二区| 美女精品一区最新中文字幕一区二区三区 | 亚洲一区二区三区精品动漫| 国内精品麻豆美女在线播放视频 | 欧美一区二区三区红桃小说| 国产欧美一区二区白浆黑人| 中文字幕在线视频久| 久久亚洲成人精品| 黄网站在线观看| 亚洲成人精品在线| 国产乱码一区二区| 欧美亚洲动漫精品| 亚洲一区欧美在线| 亚洲免费资源在线播放| 黄色片在线观看免费| 成人国产精品免费网站| 黑人巨大猛交丰满少妇| 久久99国产精品久久99果冻传媒| 四虎永久在线精品无码视频| 亚洲天堂成人| 日本天堂免费a| 香蕉国产精品| 亚洲一区二区精品在线观看| 精品国产乱码久久久| 精品一区二区三区免费毛片| 操欧美女人视频| 91一区二区三区| 99热这里有精品| 国产精品影院在线观看| 欧美黄色三级| 欧美性在线视频| 九色porny视频在线观看| 欧美激情一区二区三区在线视频观看| 国产在线69| 久久在精品线影院精品国产| 日本中文字幕在线观看| 伊人成人开心激情综合网| 国产毛片在线看| 在线看欧美日韩| www.亚洲.com| 日韩中文字幕视频| 在线毛片网站| 日韩视频免费大全中文字幕| 日本在线人成| 久久九九国产精品怡红院| www久久日com| 九色精品免费永久在线| 欧美人体视频xxxxx| 欧美日产国产成人免费图片| 欧美wwww| 欧美在线欧美在线| 中文字幕 在线观看| 69久久夜色精品国产69| 五月天av在线| 国产精品国产福利国产秒拍| 久久久久黄色| 91在线高清免费观看| 日韩欧美一级| 精品乱子伦一区二区三区| 久草成人在线| 一区二区三区欧美在线| 欧美精品二区| 男人靠女人免费视频网站| 丝袜a∨在线一区二区三区不卡| 欧美伦理视频在线观看| 久久福利资源站| 岛国精品一区二区三区| 久久综合一区二区| 国产第一页精品| 亚洲免费av观看| 国产精品23p| 日本久久精品电影| 97久久人国产精品婷婷| 日韩欧美一区中文| 青青草娱乐在线| 久久艳片www.17c.com| 国产精品探花在线| 日av在线播放中文不卡| 日韩精品第二页| 国产成人精品免费视频大全最热| 岳的好大精品一区二区三区| 一级做a爰片久久| 亚洲国产日韩在线| 国产aaaaa毛片| 国产成人自拍网| 伊人网伊人影院| 亚洲视频在线一区二区| 九九热在线视频播放| 69堂成人精品免费视频| 午夜视频福利在线| 日韩最新在线视频| 老牛影视精品| 91视频免费在线| 国产成人1区| 青青草免费在线视频观看| 国产午夜久久| 中文字幕 欧美 日韩| 国产婷婷色一区二区三区四区| 久久精品视频免费在线观看| 色综合久久66| 亚洲精品久久久久久久久久| 在线视频欧美日韩精品| av最新在线| 91黄色国产视频| 欧美日韩在线播放视频| 91九色在线观看视频| 国产乱淫av一区二区三区| 亚洲国产天堂av| 亚洲成人av一区二区| av免费在线不卡| 中文日韩在线观看| 久九九久频精品短视频| 国产精品久久一区二区三区| 亚洲成人99| www.久久久精品| 久久久久久久久久久久久夜| 国产无遮挡免费视频| 678五月天丁香亚洲综合网| 国产精品一区二区婷婷| 欧美一级电影久久| 久久精品福利| av在线播放天堂| 国产精品一区在线观看乱码 | 亚洲毛片欧洲毛片国产一品色| 久久精品国产久精国产思思| 91tv亚洲精品香蕉国产一区| 欧美精品123| 国产亚洲欧洲| 男男做爰猛烈叫床爽爽小说| 亚洲成人av中文| 人人妻人人澡人人爽精品日本| 欧美人在线观看| 欧美一级大片在线视频| 伊人久久青草| 久久国产乱子精品免费女| 性欧美精品男男| 在线观看国产日韩| 成人不用播放器| 国产精品视频精品| 色狮一区二区三区四区视频| 日韩肉感妇bbwbbwbbw| 久久精品亚洲麻豆av一区二区| 波多野结衣一区二区三区在线| 国产亚洲成av人片在线观看桃| avav成人| 国产又爽又黄ai换脸| 国产一区在线观看视频| 538任你躁在线精品视频网站| 日韩亚洲电影在线| 色网在线观看| 精品一区二区日本| 久久久一二三| 久久久免费看片| 欧美精三区欧美精三区 | 国内精品久久久久久久| 久久激情av| 日韩在线第三页| 国产精品嫩草久久久久| 一级黄色大片网站| 欧美成人网在线| 三级精品视频| 三级a在线观看| 亚洲人亚洲人成电影网站色| www.av导航| 18久久久久久| 日韩a一区二区| 国产精品99精品无码视亚| 狠狠色狠色综合曰曰| 国产视频精选在线| 亚洲va电影大全| 一本色道久久综合亚洲精品不卡| 久久av无码精品人妻系列试探| 欧美日本一道本在线视频| 在线黄色网页| 久久一区二区三区av| 久久精品国产久精国产爱| 日韩欧美视频在线免费观看| 国产一区二区三区视频免费| 国产精品久一| 日韩av黄色网址| 亚洲美女一区二区三区| 日韩av资源| 91九色国产社区在线观看| 亚洲大黄网站| 久草福利资源在线| 亚洲第一av网站| 日韩免费在线电影| 免费在线激情视频| 亚洲女人的天堂|