精品欧美一区二区三区在线观看 _久久久久国色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)

日韩欧美精品在线| 欧美极品另类videosde| 欧美黑人又粗大| 欧美狂猛xxxxx乱大交3| 成人交换视频| 亚洲午夜久久久久久久久电影网| 久久久久久久久一区二区| 中文字幕一区二区久久人妻| 欧美日韩mv| 亚洲欧美激情在线视频| 永久免费看片在线观看| sis001欧美| 亚洲精品一二三区| 日本一区不卡| 免费国产精品视频| 免费成人在线观看视频| 97超级碰碰碰| 欧美三级免费看| 欧美欧美黄在线二区| 日韩一区二区在线播放| 午夜视频你懂的| av中文资源在线资源免费观看| 26uuu另类欧美亚洲曰本| 91日本视频在线| 91麻豆精品在线| 午夜亚洲性色视频| 欧美高清在线观看| 农村老熟妇乱子伦视频| 麻豆视频一区| 精品久久免费看| 手机在线国产视频| 97成人超碰| 欧美视频在线免费看| youjizz.com在线观看| 麻豆视频在线免费观看| 国产欧美日本一区二区三区| 黑人另类av| 亚洲欧美另类日韩| 国产成人啪午夜精品网站男同| 国产精品亚洲网站| 久久精品五月天| 亚洲一区欧美激情| 欧美一区二区三区免费视| 久久久久黄色片| 亚洲激情中文| 操日韩av在线电影| 2014亚洲天堂| 欧美激情电影| 日韩视频免费中文字幕| 18精品爽国产三级网站| 国内黄色精品| 国产香蕉一区二区三区在线视频| 97伦伦午夜电影理伦片| 日韩中出av| 国产丝袜一区视频在线观看 | 人人爽香蕉精品| 国产成人精品免高潮费视频| 亚洲天堂男人av| 久久精品观看| 国产精品91视频| 伊人免费在线观看| 麻豆精品一区二区综合av| 国产玖玖精品视频| 在线免费一级片| 狠狠网亚洲精品| 97超碰在线播放| 老牛影视av牛牛影视av| 91网页版在线| 天天人人精品| 成视频免费观看在线看| 亚洲综合在线观看视频| 青青草精品视频在线| 免费高潮视频95在线观看网站| 欧美日韩免费一区| 天天爽天天爽夜夜爽| 青青在线精品| 欧美大片国产精品| 日本一区二区三区网站| 日本电影一区二区| 欧美乱大交xxxxx| 久久久国产高清| 视频在线在亚洲| 国产深夜精品福利| 狠狠躁日日躁夜夜躁av| 久久久影院官网| 亚洲在线观看一区| 污污的网站在线看| 色悠久久久久综合欧美99| 在线观看高清免费视频| 精品久久国产一区| 亚洲精品av在线播放| 国产美女永久免费无遮挡| 亚洲激情中文在线| 66m—66摸成人免费视频| 精品国产www| 粉嫩久久99精品久久久久久夜| 蜜桃av噜噜一区二区三| www免费视频观看在线| 精品久久久久久| 亚洲三级在线观看视频| 牛牛影视久久网| 俺去亚洲欧洲欧美日韩| 日韩精品视频播放| 国产一区二区三区观看| 久久综合中文色婷婷| 国产精品久久久久久福利| 精品人伦一区二区三区蜜桃免费| 亚洲欧美自拍另类日韩| 欧美黄色录像| 欧美日韩国产999| 青青草视频在线观看免费| 国产凹凸在线观看一区二区| 神马影院我不卡午夜| 不卡专区在线| 日韩一区国产二区欧美三区| 99精品全国免费观看| 亚洲激情社区| 51午夜精品| 77导航福利在线| 欧美性极品xxxx做受| 又黄又色的网站| 91精品国产自产拍在线观看蜜| 日韩av观看网址| 欧美一级视频免费| 亚洲免费观看高清完整版在线观看熊 | 国产欧美精品日韩精品| 日韩资源在线| 亚洲成人777| 波多野结衣中文字幕在线播放| 欧美日韩一区二区三区视频播放| 97在线视频免费观看| 国产富婆一级全黄大片| 1区2区3区国产精品| 欧美大尺度做爰床戏| 国产中文精品久高清在线不| 青青草原成人在线视频| 天天摸天天干天天操| 亚洲第一综合色| 日本50路肥熟bbw| 国产一区二区中文| 91精品综合久久| 国产黄网站在线观看| 欧美美女一区二区在线观看| 国产综合精品久久久久成人av| 久久国产主播| 蜜桃欧美视频| 制服丝袜专区在线| 亚洲伦理中文字幕| 久久久蜜桃一区二区| 国产亚洲一二三区| 国产福利影院在线观看| 精品不卡一区| 国产欧美久久久久久| 男女啪啪在线观看| 欧美猛男超大videosgay| 黄色a级片在线观看| 国产激情视频一区二区三区欧美 | 夜久久久久久| 欧美亚洲精品日韩| 日韩在线观看不卡| www.色综合| 性生交大片免费看女人按摩| 亚洲一区二区精品3399| 国产精品久久AV无码| 亚洲制服av| 亚洲精品国产精品国自产| 国产91欧美| 欧美人与性动交a欧美精品| 亚洲高清视频在线播放| 精品久久久久久国产| 国产在线观看h| 麻豆精品精品国产自在97香蕉 | 亚洲精选91| 欧美在线视频一区二区三区| 久久亚洲精品人成综合网| 超碰91人人草人人干| 成人乱码一区二区三区| 欧美日韩一二三四五区| 黄色一级片一级片| 国产成人av一区二区| 妞干网在线免费视频| 99精品美女| 国产精品区免费视频| 希岛爱理一区二区三区av高清| xxxx欧美18另类的高清| 成人午夜精品福利免费| 色婷婷久久久亚洲一区二区三区| 黑人狂躁日本娇小| av一二三不卡影片| 污视频免费在线观看网站| 激情欧美一区二区三区| 日本黑人久久| 伊人久久影院| 国产精品久久久久aaaa九色| 欧洲一区二区三区| 在线电影中文日韩| 亚洲国产成人在线观看| 欧美无乱码久久久免费午夜一区| 欧美极品aaaaabbbbb| 国产日韩欧美精品在线| 中文字幕一区二区三区人妻在线视频| 免费亚洲一区| 久久男人资源站| 成人看的视频| 激情五月综合色婷婷一区二区| 日韩国产大片| 欧美在线视频一区| 亚洲淫性视频| 自拍偷拍免费精品| 亚洲av激情无码专区在线播放| 91精品国产91综合久久蜜臀| 97人妻一区二区精品视频| 亚洲国产aⅴ天堂久久| 91香蕉视频污在线观看| 久久伊99综合婷婷久久伊| 中文字幕无人区二| 狠狠色丁香婷综合久久| 成年人黄色片视频| 一本久道综合久久精品| 中文字幕精品在线播放| 色琪琪久久se色| 欧美在线播放一区| 精品一区免费| 久久99久久99精品蜜柚传媒| 国产精品17p| 亚洲最大福利视频| crdy在线观看欧美| 国产精品丝袜白浆摸在线| 日韩av大片站长工具| 久久久久亚洲精品国产| 日本高清在线观看| 久久精品国产一区| 麻豆影视在线观看_| 中文字幕亚洲图片| av网站在线播放| 一区二区三区动漫| 北岛玲一区二区三区| 亚洲午夜未满十八勿入免费观看全集 | 亚洲欧美日韩国产yyy| 欧美美女在线| 日韩av图片| 北条麻妃国产九九九精品小说| 欧美一区二区三区电影在线观看| 亚洲伊人春色| 精品国产3级a| 免费久久久一本精品久久区| 永久免费观看精品视频| 国产一区二区在线播放| 国产欧美自拍| 成人久久一区二区| 伊人亚洲精品| 成人av网站观看| xxxx日韩| 久久青青草综合| 国产免费久久| 亚洲国产精品久久久久久女王| 成人精品久久| 国产又粗又爽又黄的视频| 91精品国产乱码久久久久久 | 黄在线免费看| 亚洲天堂影视av| www免费网站在线观看| 中文字幕日韩欧美| 毛片av在线| 欧美精品video| 成人av免费电影网站| 国产精品美女午夜av| www 久久久| 国产精品视频免费观看| 私拍精品福利视频在线一区| 欧美日本韩国在线| 欧美日韩激情| 欧洲金发美女大战黑人| 欧美日韩国产高清| 亚洲自偷自拍熟女另类| 免费精品视频在线| xxxx国产视频| 久久久久久一二三区| 99在线视频免费| 亚洲激情校园春色| 国产www在线| 欧美美女bb生活片| 欧美 日韩 国产 在线| 亚洲欧美综合区自拍另类| 久久精品视频免费看| 久久噜噜噜精品国产亚洲综合 | 中文字幕一二三四区| 国产精品久久久久9999吃药| 久久婷婷国产麻豆91| 色哟哟国产精品免费观看| 国产免费叼嘿网站免费| 日韩av在线一区二区| 日本在线观看www| 91精品国产91久久久久久久久| 国产精品亚洲d| 国产精品区一区| 免费观看成年人视频| 成人av网站大全| 亚洲一区二区自偷自拍 | 国产一级av毛片| 欧美亚洲综合一区| 亚洲成人第一区| 一区三区二区视频| 福利网站在线观看| 国产热re99久久6国产精品| 超碰精品在线观看| 亚洲成人18| 国产欧美一区二区三区国产幕精品| 五月婷婷六月合| 久久综合久色欧美综合狠狠| 久久久久亚洲av片无码| 色999日韩国产欧美一区二区| 成人黄色免费视频| 日韩在线免费视频观看| 黑人巨大精品| 国内精品国语自产拍在线观看| 香蕉国产精品| 91在线视频观看免费| av一区二区三区四区| www.av视频| 欧美日韩国产一级| 成人性爱视频在线观看| 77777少妇光屁股久久一区| 成人激情久久| 亚洲一二三区精品| 日韩一区精品字幕| 好吊日免费视频| 午夜精品免费在线| 午夜精品久久久久久久爽| 精品久久久999| 欧美视频第一| 图片区小说区区亚洲五月| 西西人体一区二区| 午夜视频在线观看国产| 亚洲一区二区在线免费观看视频| 国产日韩在线观看一区| 色伦专区97中文字幕| jizz亚洲女人高潮大叫| 日本在线免费观看一区| 午夜在线精品| 三级网站在线免费观看| 欧美日韩一区二区免费视频| 亚洲区小说区图片区| 91国内在线视频| 香蕉久久精品日日躁夜夜躁| 少妇人妻大乳在线视频| www.激情成人| 久久久久久91亚洲精品中文字幕| 亚洲国产中文字幕在线观看| 久草在线资源站手机版| 久久爱av电影| 三级久久三级久久| 东方伊人免费在线观看| 欧美三级在线视频| 日韩黄色影院| 114国产精品久久免费观看| 综合av在线| 成年人小视频在线观看| 五月天网站亚洲| 久久经典视频| 国产精品视频内| 婷婷亚洲综合| 国产人妖在线观看| 精品色蜜蜜精品视频在线观看| 欧美日韩影视| 成人黄色免费片| 伊人久久大香线| yjizz视频| 色噜噜夜夜夜综合网| 在线看免费av| av色综合网| 久久九九精品| 波兰性xxxxx极品hd| 日韩丝袜美女视频| 欧美激情网站| 亚洲精品中文字幕在线| 国产精品18久久久久久久久 | 日韩在线一区二区三区| 制服丨自拍丨欧美丨动漫丨| 日韩三级视频中文字幕| 人人草在线视频| 亚洲精品一区二区三区樱花| 国产福利电影一区二区三区| 五月天综合激情| 中文字幕日韩电影| av毛片精品| 天天天干夜夜夜操| 亚洲综合激情另类小说区| 日产精品久久久久久久性色| 国产在线观看精品| 99国产精品视频免费观看一公开| 卡一卡二卡三在线观看| 精品国产乱码久久久久久久 | 亚洲一区电影在线观看| 亚洲福利在线播放| 992tv国产精品成人影院| 波多野结衣av一区二区全免费观看| 久久久精品国产99久久精品芒果| 国产三级第一页| 国产精品www网站|