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

什么是堆?有哪些使用場景?

開發 前端
我們在前面二叉樹的學習中就知道,完全二叉樹最理想的存儲方式便是數組,省去了左右節點的指針空間,而且不會造成很大的浪費。比如,節點位置為i,那么其左子樹就存放在2i的位置,右子樹就存放在2i+1的位置,其父節點在i/2的位置,向上向下索引都很快捷。

一、什么是堆

1.1 堆的定義

堆是一個完全二叉樹;

堆中的每一個節點的值都必須大于等于(大頂堆)or小于等于(小頂堆)其子樹中的每個節點的值;

1.2 堆上的操作

  • 堆的存儲
  • 我們在前面二叉樹的學習中就知道,完全二叉樹最理想的存儲方式便是數組,省去了左右節點的指針空間,而且不會造成很大的浪費。比如,節點位置為i,那么其左子樹就存放在2i的位置,右子樹就存放在2i+1的位置,其父節點在i/2的位置,向上向下索引都很快捷。
  • 插入元素
  • 我們一般都將待插入的數據作為一個節點放到當前堆的最后面,然后自下而上進行堆化操作。

在堆的最后面插入一個節點

自下而上進行堆化

  • 刪除堆頂元素
  • 堆一般都是進行刪除堆頂元素,因為堆頂不是最大值就是最小值。一般不會刪除非堆頂元素,這是堆這種數據結構的特性決定的。
  • 我們先將堆中的最后一個元素賦值給堆頂元素,然后再刪除最后一個元素,最后再進行自上而下的堆化操作。

刪除堆頂元素的堆化操作

在如上插入和刪除堆頂元素的操作中,主要的時間消耗都在堆化這個過程中,堆化操作需要比較和交換的次數最大不會超過樹的高度,而前面我們說過,完全二叉樹的高度是2的對數,因此插入和刪除堆頂元素操作的時間復雜度是O(logn)。

二、 堆排序

給定一個數組,其中的元素都是無序雜亂的,我們怎么對它進行堆排序呢?

2.1 建堆

首先,我們需要將該數組建立為一個大頂堆(小頂堆),通常有以下兩種建堆的方法:

  • 自上而下
  • 把下標為1的元素作為原始堆,然后從下標2開始直到n,依次插入前面的堆中,就像前面講的插入元素操作一樣,不斷地進行堆化,然后形成一個大頂堆;其時間復雜度為O(nlogn),不夠好。
  • 自下而上
  • 我們注意到,在完全二叉樹中,最后一個元素的下標除以2就能得到最后一個非葉子節點元素的下標n/2,光是葉子節點是無法進行堆化的,因此我們從n/2開始往前一直到下標為1為止不斷進行堆化,然后形成一個大頂堆;此過程就類似刪除堆頂元素之后的堆化過程;其時間復雜度為O(n),優于第一種。

建堆時自下而上進行堆化的過程

2.2 排序

經過上一步的建堆操作,我們得到了一個大頂堆,但是數組中的數據看上去仍然是無序的,我們需要基于這個大頂堆把數組排下序。

首先從堆頂取出元素,這個元素肯定是最大的,把它和數組最后一個元素進行交換,放到位置n,然后堆中剩下的元素不斷地進行堆化,并始終取堆頂元素依次放到n-1,n-2,n-3的位置上,當堆中只剩最后一個元素的時候,此時數組就是一個有序數列了。

堆排序的過程示意

堆排序的過程中,我們需要對n個元素進行堆化操作,每次堆化操作時間復雜度取決于完全二叉樹的高度,所以最終得到堆排序的時間復雜度為O(nlogn)。

堆排序不需要借助很多的額外存儲空間,因此它屬于原地排序;

堆排序過程中會可能改變相同值的位置,所以不是穩定的排序算法;

2.3 堆排序和快速排序的比較

雖然堆排序和快速排序時間的時間復雜度都是O(nlogn),但通常都認為堆排序的性能是比不上快速排序的。

  • 堆排序的堆化過程中,在比較和交換元素時,讀取的數據并不是局部順序的;快速排序就是局部順序的;所以快速排序更加顯得CPU緩存友好,性能也會相對較好;
  • 對于同樣的數列,堆排序數據的交換次數要多于快速排序;

三、堆排序的應用

3.1 堆排序

如上已經講解過了。

3.2 優先級隊列

優先級隊列中,數據的出隊不是按照入隊先后來決定的,而是按照優先級來的,優先級高(低)的就先出隊,實現優先級隊列的方法有很多,但是其中使用堆來實現是最為快捷高效的。比如Java中的PriorityQueue。

場景一:合并有序小文件

假設我們有n個小文件,每個大小為100MB,每個文件中存放的都是有序的字符串,我們如何把這n個小文件中的字符串有序地全都合并到一個大文件中呢?

這里有兩個方法:

  • 按照歸并排序中的合并思路
  • 設置n個指針各自指向每個文件的第一個字符串,將它們都加載到一個大小為n的數組中;
  • 然后對數組進行遍歷尋找最小元素,時間復雜度為O(n);并從數組中取出最小元素放到大文件中,將該元素從數組中刪除;
  • 將該元素來源的小文件中的指針移向下一位取出元素放到數組中,然后重復第二步;
  • 使用小頂堆
  • 設置n個指針各自指向每個文件的第一個字符串,將它們都加載到一個小頂堆中,初始是一個建堆的過程;
  • 取出堆頂元素放到大文件中,并將該元素從小頂堆的堆頂刪除,小頂堆會自動進行堆化;
  • 將該元素來源的小文件中的指針移向下一位取出元素插入小頂堆中,小頂堆會自動進行堆化,然后重復第二步;
  • 我們可以看到,這兩種方法的區別在于,前者需要每次遍歷數組找到最小值,后者則是有刪除和插入兩個堆化的過程。堆化過程的時間復雜度為O(logn),明顯比遍歷數組的O(n)要好,所以方法二更加高效。

場景二:實現高性能定時器

假設我們使用定時器設置了很多個待執行的任務,那么如何實現定時觸發這些提前設定好的任務呢?

這里說三個方法:

  • 程序每隔一段很小的時間(比如1秒)就進行任務掃描,找到最近要執行的任務進行執行,這種方法其實就是每1秒都要去尋找最小值,每次的時間復雜都是O(n),而且,假設最近一個任務是定在2小時候執行的,那么這2小時內,掃描程序都是白執行的,浪費資源。這種方法并不推薦。
  • 維護一個有序列表,比如使用快速排序,只要記住最小值的執行時間即可,等到了那個時間點程序再執行,如此掃描程序就不用一直去掃描了。
  • 使用小頂堆來維護任務列表,記住堆頂任務的執行時間,等到了那個時間點程序再執行,如此掃描程序就不用一直去掃描了。
  • 方法2和方法3其實是類似的,關鍵在于采取什么樣的數據結構和算法來獲取最小值。如果存在中途插入或者取消任務的情況,對于方法2來說,插入一個元素到有序列表中和從有序列表中刪除一個給定元素時間復雜度是多少呢?假設我們采用效率最高的二分查找,那么是O(logn),但是插入和刪除元素是要搬移元素的,這個時間是O(n),所以總的下來就是O(n);如果使用方法3,那么無論插入還是刪除元素,都是一個堆化的過程,時間復雜度為O(logn),所以方法3中使用堆更加高效。

3.3 求解Top-k問題

假設存量數據量為n,我們需要從n中找到Top-k的元素,并且針對不斷添加進來的數據,我們都要獲取最新的Top-k元素,這種問題應該怎么處理呢?

  • 先從n中取出前k個元素,組成一個小頂堆,此時堆頂元素是最小的,我們從K+1個元素開始,和堆頂元素進行比較,如果比堆頂元素小,那么不做處理,繼續下一個;如果比堆頂元素大,那么把堆頂元素刪除,并插入k+1這個元素;等到n個元素全部遍歷完,那么小頂堆中的k個元素就是Top-k數據了;
  • 對于外部不斷添加進來的數據其實思路是一樣的,把它當成數據源,不斷地和堆頂元素比較,重復上面的步驟操作即可。

時間主要耗費在一開始k個元素的初始建堆O(logk)上,還有刪除堆頂元素和插入新元素時的堆化O(logk)上;所以,總的時間復雜度應該為O(nlogk),比使用排序來獲取Top-k的O(nlogn)還是要高效的。

3.4 求解中位數

對于一個無序的數列,怎么求出它的中位數呢?這要看數列是靜態的還是動態的。

如果是靜態的數列,那么我們先進行排序,比如快速排序O(nlogn),然后如果總數是奇數,那么中位數就在n/2+1的位置上;如果總數是偶數,那么中位數有兩個,在n/2和n/2+1的位置上,隨便取一個即可??偟臅r間復雜度就是排序算法的時間復雜度O(nlogn)。

那如果是動態數列呢,我們需要維護數列的有序性,那么勢必要對新插入或者需要刪除的數據進行查找,時間復雜度為O(n),還有數據搬移的O(n),所以就會變得很低效,我們需要使用堆來解決這個問題。

我們先將已有數據排序,然后維護一個大頂堆和一個小頂堆,其中小頂堆存放最大的n/2個數據,堆頂元素是這n/2中最小的,大頂堆存放剩下的元素,堆頂元素是最大的。此時,中位數就是大頂堆的堆頂元素。

當動態數據添加進來時,我們將待添加元素和大頂堆的堆頂元素進行比較,如果小于等于,那么就插入大頂堆中;否則就和小頂堆的堆頂元素比較,如果大于等于,就插入小頂堆中。此時,如果小頂堆中的個數超過了n/2,就需要不斷地取出堆頂元素插入到大頂堆中,直至個數為n/2;如果小頂堆中的個數小于n/2,就需要不斷地取出大頂堆的堆頂元素插入到小頂堆中,直至小頂堆個數為n/2;

動態數列使用堆求解中位數過程示意

通過如上的過程,我們每次從大頂堆堆頂取出來的元素就是整個數列的中位數。整個過程的時間復雜度是多少呢?一開始初始化時的排序和建堆,由于數據比較少,可以算作常量;后續動態數據的插入或者刪除,就是一個堆化的過程,時間復雜度為O(logn);大頂堆和小頂堆之間元素個數的調整不會有很多元素,所以也算作常數;因此,總的時間復雜度就是O(logn)。

既然動態數列求解中位數使用堆比較好,為什么靜態數列求解中位數不使用堆,而是排序呢?靜態數列也可以使用如上堆的方案進行求解中位數,但是時間復雜度也是O(nlogn),和排序是一樣的,但是排序明顯更加地簡單,因此推薦使用排序的方案。

3.5 求解百分位數

求解中位數的問題其實就是求解百分位數問題的一種特殊情況, 中位數可以理解為百分位為50%,所以把中位數問題一般化的話,那么問題就是求解任意百分位數的問題。

思路和上述求解百分位是一樣的,比如我們要求解90%百分位的數,那么大頂堆中需要存放90%的數據,小頂堆中存放10%的數據,當動態地增加時需要依次和大頂堆、小頂堆的堆頂元素進行比較以決定插入到哪個堆中;如果插入或者刪除后,小頂堆中的數據占比不是10%了,就需要和大頂堆進行數據的交互以保證小頂堆數據的占比,如此才能保證大頂堆的堆頂元素就是我們需要的百分位數據。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2025-04-29 09:47:04

2024-12-31 07:56:33

Disruptor內存有界隊列消費模式

2022-07-24 21:56:38

元宇宙

2023-12-29 10:28:24

SPIJava靈活性

2023-04-03 11:01:26

低代碼平臺場景

2025-02-11 09:49:12

2021-09-07 14:17:12

區塊鏈版權技術

2021-06-11 10:20:23

區塊鏈大數據技術

2021-03-15 13:36:23

區塊鏈大數據技術

2021-09-28 16:22:48

區塊鏈大數據應用

2020-11-20 10:53:46

邊緣計算

2024-12-30 08:32:36

2025-01-15 07:54:02

2021-03-16 06:47:47

Python

2024-01-03 10:32:36

2020-10-16 09:09:20

機器學習銀行技術

2023-01-30 11:27:57

人工智能高性能計算CPU

2018-03-27 09:10:54

區塊鏈

2024-05-29 14:34:07

2023-05-16 07:47:18

RabbitMQ消息隊列系統
點贊
收藏

51CTO技術棧公眾號

催眠调教后宫乱淫校园| 欧美一卡2卡3卡4卡无卡免费观看水多多| 国产传媒免费在线观看| 视频二区欧美| 色8久久人人97超碰香蕉987| 国产高清免费在线| 四虎电影院在线观看| 美日韩一区二区| 欧美精品videosex极品1| 人妻体内射精一区二区| www.欧美视频| 欧美视频精品一区| 天天操天天干天天玩| 黄色性生活一级片| 在线观看成人黄色| 91精品国产91久久久久久不卡| 亚洲国产精品无码久久久久高潮| 天堂久久午夜av| 亚洲免费观看高清完整版在线 | 国产视频久久网| 伊人久久大香线蕉午夜av| 亚洲第一色网站| 日韩不卡一二三区| 久久久视频在线| 免费黄色国产视频| 色先锋久久影院av| 欧美白人最猛性xxxxx69交| 国产免费又粗又猛又爽| 天堂8中文在线最新版在线| 亚洲色图在线播放| 视频一区二区精品| 香蕉av在线播放| 国产成人福利片| 国产人妖伪娘一区91| 国产精品久久久久久久久久久久久久久久久| 欧美电影免费| 一个人www欧美| 国产呦小j女精品视频| 免费精品一区二区三区在线观看| 欧美中文一区二区三区| 欧美三级午夜理伦三级| 国产精品电影| 亚洲韩国精品一区| 亚洲精品少妇一区二区| 欧美天天影院| 国产精品久久毛片| 亚洲国产精品毛片| 二区三区在线| 国产人成亚洲第一网站在线播放| 欧美日韩在线高清| 三级在线播放| 久久亚洲春色中文字幕久久久| 亚洲字幕一区二区| av一级黄色片| 国产不卡视频一区| 成人免费在线一区二区三区| 99久久精品免费看国产交换| 国产一区二区网址| 91免费国产网站| 国产乱码久久久久| 国产黑丝在线一区二区三区| 亚洲一区亚洲二区| 亚洲精品久久久狠狠狠爱| 国产成人午夜精品5599| 91久久偷偷做嫩草影院| 亚洲av无码国产精品永久一区| 国产乱子轮精品视频| 91在线播放视频| 国产18精品乱码免费看| 99久久综合国产精品| 久久99精品久久久久久久久久 | 激情久久一区二区| 欧美日韩久久久| 中文字幕第22页| 福利片一区二区| 亚洲国产高潮在线观看| 人妻少妇精品视频一区二区三区| 奇米狠狠一区二区三区| 一区二区欧美久久| 538精品在线视频| 激情欧美丁香| 日韩免费在线看| 国产又粗又长又大视频| 高清不卡在线观看| 欧美午夜精品理论片a级大开眼界| 国产福利小视频在线观看| 国产精品久99| 国产综合中文字幕| 韩国精品主播一区二区在线观看 | 中日韩av在线播放| 日韩最新av| 亚洲韩国欧洲国产日产av| 粉嫩av蜜桃av蜜臀av| 日韩精品首页| 国内精品一区二区三区四区| 成人免费视频国产免费| 国产精品12区| 欧美深深色噜噜狠狠yyy| 岛国视频免费在线观看| 一区二区三区中文在线观看| 成人精品小视频| 久久三级中文| 亚洲一二在线观看| 精品无码久久久久久久| 日韩电影免费在线看| 国产91亚洲精品一区二区三区| 日本天堂影院在线视频| 中文字幕综合网| 免费黄色福利视频| 视频一区日韩精品| 在线观看日韩专区| 日韩av在线播放观看| 极品尤物av久久免费看| 欧美精彩一区二区三区| 牛牛精品在线视频| 欧美日韩一级二级| 一本色道久久综合亚洲精品图片| 欧美久色视频| 国产在线视频2019最新视频| 美女做暖暖视频免费在线观看全部网址91 | 国产又粗又猛又爽又黄的视频四季 | 久久先锋资源网| 无码粉嫩虎白一线天在线观看 | 国产精品久久7| 麻豆影院在线| 欧美三级三级三级| 日本高清www| 一本色道久久综合亚洲精品不卡| 亚洲r级在线观看| 日本成人在线播放| 日本精品一区二区三区高清| 中文成人无字幕乱码精品区| 午夜久久福利| 91亚洲精华国产精华| 午夜看片在线免费| 欧美视频在线免费| 国模私拍在线观看| 在线精品福利| 国产伦视频一区二区三区| 羞羞视频在线观看免费| 91精品免费在线| 午夜三级在线观看| 黄色日韩网站视频| 国产又爽又黄ai换脸| 免费视频观看成人| 日韩中文字在线| 97超视频在线观看| 亚洲欧洲国产日本综合| av噜噜在线观看| 亚洲一区 二区 三区| 亚洲一区二区三区久久| 国产婷婷视频在线| 日韩欧美国产麻豆| 久一区二区三区| a美女胸又www黄视频久久| 欧美,日韩,国产在线| 日本亚洲不卡| 欧洲一区二区视频| 成人在线观看网站| 欧美日韩国产a| 2021亚洲天堂| 成人免费视频免费观看| 波多野结衣乳巨码无在线| 欧美爱爱网站| 国产精品免费福利| 成视频免费观看在线看| 精品日韩av一区二区| 日韩女优在线观看| 久久精品一区二区三区不卡| 天天影视综合色| 手机亚洲手机国产手机日韩| 99三级在线| 精精国产xxx在线视频app| 亚洲色图欧美制服丝袜另类第一页| 国产一级淫片a视频免费观看| 欧美国产精品专区| 日韩视频在线观看一区二区三区| 在线日本成人| 欧美一区三区二区在线观看| 在线视频成人| 97在线观看视频国产| 国产高清一区在线观看| 日韩一区二区影院| 久久国产视频精品| 国产精品国产三级国产aⅴ中文| 久久aaaa片一区二区| 中国女人久久久| 亚洲视频欧美在线| 加勒比色综合久久久久久久久| 日韩av手机在线| 国产成人l区| 国产偷亚洲偷欧美偷精品| 亚洲中文字幕无码爆乳av| 亚洲精品中文在线观看| 久久久久久久久久久国产精品| 国产综合色视频| 久久国产成人精品国产成人亚洲| 欧美r级电影| 精品国产乱码久久久久| 亚洲色图综合| 欧美又大粗又爽又黄大片视频| yw193.com尤物在线| 亚洲国产精品久久久久秋霞蜜臀| 亚洲av无码乱码国产精品fc2| 一区二区三区av电影| 精品人妻无码一区二区三区换脸| 国产精品一区二区久久不卡 | 黄色小说综合网站| 欧美性猛交久久久乱大交小说| 欧美网站在线| 亚洲综合av一区| 免费一区二区| 精品国产日本| 亚洲一区网址| 成人午夜一级二级三级| 午夜av成人| 91国语精品自产拍在线观看性色| 麻豆传媒视频在线| 国产亚洲xxx| 日韩在线免费看| 亚洲成av人影院在线观看| 国产又爽又黄免费软件| 91久久精品网| 五月天激情国产综合婷婷婷| 亚洲va中文字幕| 久久99久久久| 日韩美女视频一区二区| 亚洲激情图片网| 亚洲国产精品黑人久久久 | 亚洲欧洲99久久| 色哟哟精品观看| 久久一夜天堂av一区二区三区| 亚洲一区二区在线免费| 丁香婷婷深情五月亚洲| aaaaaaaa毛片| 国产一区二区网址| 尤物网站在线看| 精品一区二区日韩| 亚洲一区二区三区四区五区| 蜜臀av在线播放一区二区三区| 日韩av资源在线| 玖玖精品视频| 成人亚洲视频在线观看| 丝袜美腿成人在线| 国产视频一区二区三区在线播放| 免播放器亚洲| 92看片淫黄大片一级| 久久不射中文字幕| 免费黄色特级片| 日本中文字幕一区二区有限公司| 免费激情视频在线观看| 老司机久久99久久精品播放免费| 国内外成人激情视频| 天堂一区二区在线免费观看| 免费看a级黄色片| 免费成人在线视频观看| 亚洲小视频网站| 国产一区三区三区| 少妇伦子伦精品无吗| 成人h版在线观看| 人妻丰满熟妇av无码久久洗澡 | 久久国内精品视频| 色一情一区二区三区| 国产精品综合二区| 日本一卡二卡在线| 2020国产成人综合网| 亚洲最大成人综合网| 国产精品久久久久毛片软件| 日韩在线一卡二卡| 亚洲综合一区在线| 久久久精品福利| 欧美日韩中文字幕一区二区| 精品国产av一区二区| 亚洲精品720p| av午夜在线| 色综合91久久精品中文字幕| 密臀av在线播放| 国产欧洲精品视频| 红杏成人性视频免费看| 欧美日韩在线精品| 午夜国产精品视频免费体验区| 美女日批免费视频| 美国十次了思思久久精品导航| 久久久久无码精品| www成人在线观看| 天堂а√在线中文在线鲁大师| 亚洲制服丝袜av| 中文字幕永久在线| 日韩一二三区不卡| 国产日韩精品在线看| 欧美黄色片在线观看| 亚洲天堂一区二区| 99久久伊人精品影院| 精品久久影视| av免费看网址| 国产乱码精品一区二区三区忘忧草 | 精品久久美女| 国产手机免费视频| 麻豆91小视频| 欧美性xxxx图片| 亚洲乱码中文字幕| 成人毛片一区二区三区| 精品久久国产97色综合| 日本在线视频观看| 欧美一级在线亚洲天堂| 欧美专区视频| 亚洲精品高清国产一线久久| 日韩一级网站| 日本特黄在线观看| 国产欧美一区二区精品仙草咪 | 欧美丝袜丝交足nylons图片| 欧美一区二区三区激情| 久久精品国亚洲| 日本综合字幕| 精品国产_亚洲人成在线| 一区二区三区午夜视频| 91香蕉视频污版| 久久人人超碰精品| 亚洲一区欧美在线| 精品国产一区二区三区忘忧草| 欧美a在线看| 国产精品久久久久高潮| 亚洲区小说区| 9久久9毛片又大又硬又粗| 成人午夜免费视频| 国产精品免费人成网站酒店| 欧美日韩中文一区| 国产三级视频在线看| 国产91网红主播在线观看| 欧美网色网址| ww国产内射精品后入国产| 成人av在线一区二区| 欧美人妻精品一区二区三区 | 黄色一区二区在线| 欧美一级特黄aaaaaa大片在线观看| 精品久久久av| 成人涩涩视频| 亚洲精品在线观看免费| 日本人妖一区二区| 日韩av片在线| 欧美日韩一级片在线观看| 午夜在线免费观看视频| 国产在线观看一区二区三区| 久久国产成人午夜av影院宅| 国产高清视频网站| 国产精品无人区| 亚洲天堂中文网| 两个人的视频www国产精品| а天堂中文最新一区二区三区| 偷拍盗摄高潮叫床对白清晰| 狠狠狠色丁香婷婷综合激情| 国产午夜手机精彩视频| 欧美一卡在线观看| 伦理在线一区| 精品午夜一区二区三区| 三级久久三级久久久| 性少妇xx生活| 91精品国产高清一区二区三区 | 亚洲国产精品自拍| 四季av日韩精品一区| 国产91ⅴ在线精品免费观看| 久久99高清| 成 人 黄 色 小说网站 s色| 亚洲欧美日韩成人高清在线一区| 亚洲av无码乱码国产精品久久 | 男人添女人下部视频免费| 成人av午夜影院| 黄瓜视频在线免费观看| 一本一道久久a久久精品逆3p | 成人三级高清视频在线看| 久久综合九色综合久99| 三级一区在线视频先锋| 免费在线观看黄色小视频| 欧美va亚洲va国产综合| 色网在线免费观看| 亚洲精品一区二区三区av| 国产成人av影院| 日韩在线视频不卡| 久久精品电影一区二区| 精品中国亚洲| 狠狠躁狠狠躁视频专区| 一区二区三区高清在线| 欧美日韩在线中文字幕| 成人妇女淫片aaaa视频| 99伊人成综合| 美国黄色片视频| 日韩av一卡二卡| 亚洲精品成人一区| 免费成人午夜视频| 18成人在线视频| 日韩资源在线| caoporen国产精品| 日韩电影在线观看网站| 久草中文在线视频| 中文字幕一精品亚洲无线一区| 国产精品丝袜在线播放| 免费看涩涩视频| 婷婷久久综合九色国产成人 | 天堂视频免费看| 精品美女国产在线|