日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 )

發(fā)布時(shí)間:2023/12/15 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

可視化工具及動(dòng)畫展示:舊金山大學(xué) (usfca)|數(shù)據(jù)結(jié)構(gòu)可視化工具

排序算法概念及描述:1.0 十大經(jīng)典排序算法(文章部分內(nèi)容引用自改文章)
參考:鄧俊輝 的數(shù)據(jù)結(jié)構(gòu)
本文未對(duì)排序算法概念進(jìn)行詳細(xì)說(shuō)明,只是提供已經(jīng)驗(yàn)證過(guò)的代碼及對(duì)算法核心進(jìn)行簡(jiǎn)要說(shuō)明
常用八種排序算法: 插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序

·
全部代碼(github) C#版本

0X00 前言

排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。

排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過(guò)程中需要訪問(wèn)外存。常見(jiàn)的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括:


關(guān)于時(shí)間復(fù)雜度
平方階 (O(n2)) 排序 各類簡(jiǎn)單排序:直接插入、直接選擇和冒泡排序。

線性對(duì)數(shù)階 (O(nlog2n)) ( log2n 是以2為底數(shù)的n的對(duì)數(shù))排序: 快速排序、堆排序和歸并排序;

O(n1+§)) 排序 ( § 是介于 0 和 1 之間的常數(shù) ): 希爾排序

線性階 (O(n)) 排序: 基數(shù)排序,此外還有桶、箱排序。

關(guān)于穩(wěn)定性

穩(wěn)定的排序算法:冒泡排序、插入排序、歸并排序和基數(shù)排序。

不是穩(wěn)定的排序算法:選擇排序、快速排序、希爾排序、堆排序。

名詞解釋:

  • n:數(shù)據(jù)規(guī)模
  • k:"桶"的個(gè)數(shù)
  • In-place:占用常數(shù)內(nèi)存,不占用額外內(nèi)存
  • Out-place:占用額外內(nèi)存
  • 穩(wěn)定性:排序后 2 個(gè)相等鍵值的順序和排序之前它們的順序相同

0X01 冒泡排序(起泡排序)

可視化工具及動(dòng)畫演示

/// <summary>/// 冒泡排序(A版本)/// 從后往前掃描待排序序列,如果前一個(gè)元素比后一個(gè)元素大,就交換它們兩個(gè),對(duì)每一對(duì)相鄰元素作同樣的工作;這樣,第一次掃描待排序的序列會(huì)找到一個(gè)最小值并將其放置在第一位,第二次掃描待排序的序列會(huì)找到一個(gè)第二小的值并將其放置在第二位,第三次掃描待排序的序列會(huì)找到一個(gè)第三小的值并將其放置在第三位,以此類推,直到將所有元素排序完畢;排序的過(guò)程就像泡泡不斷的往上冒,總是小的泡泡在最上面,大的泡泡在最下面。/// 時(shí)間復(fù)雜度:/// 雙層循環(huán)次數(shù):內(nèi)循環(huán)次數(shù) i=0(n-1),i=1(n-2),i=2(n-3),...,i=n-3(2),i=n-2(1)為等差數(shù)列,總次數(shù)=n*(0+n-1)/2=n*(n-1)/2/// 假設(shè)每次比較都需要交換,執(zhí)行內(nèi)循環(huán)一次時(shí)復(fù)雜度為2(比較一次+交換一次),所以復(fù)雜度=2*n(n-1)/2=n(n-1)/// 當(dāng)n非常大時(shí),多項(xiàng)式以冪次方最大的為標(biāo)準(zhǔn)所以復(fù)雜度O=n(n-1)=O(n*n)/// </summary>/// <param name="A"></param>void BubbleSort(int[] A){int n = A.Length;for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - 1 - i; j++){if (A[j] > A[j + 1]){Swap(ref A[j + 1], ref A[j]);}}}}/// <summary>/// 冒泡排序(E版本)(最優(yōu)版本)/// 時(shí)間復(fù)雜度:/// 最優(yōu)的時(shí)間復(fù)雜度:當(dāng)數(shù)據(jù)本身是有序的時(shí)候,只會(huì)比較但是不會(huì)交換,內(nèi)循環(huán)執(zhí)行一圈就結(jié)束了,復(fù)雜度O=n-1=O(n)/// 最壞的時(shí)間復(fù)雜度:O=n(n-1)=O(n*n)/// </summary>/// <param name="A"></param>void BubbleSort_E(int[] A){int n = A.Length;bool sorted = false; //整體排序標(biāo)志,首先假定尚未排序while (!sorted){sorted = true;//假定有序for (int i = 0; i < n - 1; i++){if (A[i] > A[i + 1]){Swap(ref A[i + 1], ref A[i]);sorted = false;}}n--;//因整體排序不能保證,需要清除排序標(biāo)志}}

0X02 選擇排序(直接選擇排序)

可視化工具及動(dòng)畫演示

/// <summary>/// 選擇排序(直接選擇排序)/// 一次從待排序的序列中選出最小(或最大)的一個(gè)元素,存放在已排好序的序列的后一個(gè)位置,直到全部待排序的數(shù)據(jù)元素排完;/// 時(shí)間復(fù)雜度:/// 雙層循環(huán)次數(shù):內(nèi)循環(huán)次數(shù) i=0(n),i=1(n-1),i=2(n-2),...,i=n-2(2),i=n-1(1)為等差數(shù)列,總次數(shù)=(n-1)*(0+n)/2=n*(n-1)/2/// 最壞情況每次比較都需要交換,執(zhí)行內(nèi)循環(huán)一次時(shí)復(fù)雜度為2(比較一次+交換一次),所以復(fù)雜度=2*n(n-1)/2=n(n-1),O=n(n-1)=O(n*n)/// 最優(yōu)情況每次比較都不需要交換,執(zhí)行內(nèi)循環(huán)一次時(shí)復(fù)雜度為1(比較一次),,所以復(fù)雜度=n(n-1)/2,O=n(n-1)/2=O(n*n)/// </summary>/// <param name="A"></param>void SelectionSort(int[] A){int n = A.Length;int min;for (int i = 0; i < n - 1; i++){min = i;for (int j = i; j < n; j++){if (A[min] > A[j]){min = j;}}Swap(ref A[min], ref A[i]);//Console.Write($"{i},{min}"); PrintArray(A, i, min+1);}}

0X03 插入排序(直接插入排序)

適合少量元素排序
可視化工具及動(dòng)畫演示

/// <summary>/// 插入排序(直接插入排序)/// 把待排序的記錄按其關(guān)鍵碼值的大小逐個(gè)插入到一個(gè)已經(jīng)排好序的有序序列中,直到所有的記錄插入完為止,得到一個(gè)新的有序序列。/// 時(shí)間復(fù)雜度:/// 最壞情況雙層循環(huán)次數(shù):內(nèi)循環(huán)次數(shù) i=1(1),i=2(2),...,i=n-2(n-2)為等差數(shù)列,總次數(shù)=(n-2)*(1+n-2)/2=(n-2)*(n-1)/2/// 最壞情況每次比較都需要交換,執(zhí)行內(nèi)循環(huán)一次時(shí)復(fù)雜度為2(比較一次+交換一次),所以復(fù)雜度=2*(n-2)*(n-1)/2,O=(n-1)(n-2)=O(n*n)/// </summary>/// <param name="A"></param>void InsertionSort(int[] A){int n = A.Length;for (int i = 1; i < n - 1; i++) //第一個(gè)當(dāng)做有序序列{for (int j = i; j > 0 && A[j - 1] > A[j]; j--) //內(nèi)循環(huán)使用冒泡方式對(duì)前面有序序列進(jìn)行插入{Swap(ref A[j - 1], ref A[j]);}}}/// <summary>/// 插入排序(E版本)(優(yōu)化版本)/// 時(shí)間復(fù)雜度:/// 最優(yōu)情況雙層循環(huán)次數(shù):內(nèi)循環(huán)次數(shù) i=1(1),i=2(1),...,i=n-2(1),總次數(shù)=(n-2) /// 最優(yōu)情況每次比較都不需要交換,執(zhí)行內(nèi)循環(huán)一次時(shí)復(fù)雜度為1(比較一次),所以復(fù)雜度=2*(n-2),O=2(n-2)=O(n)/// </summary>/// <param name="A"></param>void InsertionSort_E(int[] A){int n = A.Length;int j, tmp;for (int i = 1; i < n - 1; i++) //第一個(gè)當(dāng)做有序序列{tmp = A[i];for (j = i; j > 0 && A[j - 1] > tmp; j--) //內(nèi)循環(huán)使用冒泡方式對(duì)前面有序序列進(jìn)行插入{A[j] = A[j - 1];}A[j] = tmp;}}

0X04 希爾排序

基于插入排序
參考學(xué)習(xí):https://baijiahao.baidu.com/s?id=1644158198885715432&wfr=spider&for=pc
可視化工具及動(dòng)畫演示

/// <summary>/// 希爾排序/// 先取一個(gè)小于n的整數(shù)d1作為第一個(gè)增量,把數(shù)組元素分組,所有距離為d1的倍數(shù)的記錄放在同一個(gè)組中,先在各組內(nèi)進(jìn)行直接插入排序;然后,取第二個(gè)增量d2<d1重復(fù)上述的分組和排序,直至所取的增量 =1( < …<d2<d1),即所有記錄放在同一組中進(jìn)行直接插入排序?yàn)橹埂?gt;/// 時(shí)間復(fù)雜度:(推算不出來(lái),如果有小伙伴推算出來(lái)歡迎解說(shuō)指點(diǎn))/// 參考其他資料,復(fù)雜度和遞增序列h有關(guān)(increment sequence)/// By combining the arguments of these two theorems h-sequences with O(log(n)) elements can be derived that lead to a very good performance in practice, as for instance the h-sequence of the program (Sedgewick [Sed 96]). But unfortunately, there seems to be no h-sequence that gives Shellsort a worst case performance of O(n·log(n)) (see [Sed 96]). It is an open question whether possibly the average complexity is in O(n·log(n))/// </summary>/// <param name="A"></param>void ShellSort(int[] A){int n = A.Length;int h = 1;while (h < 3){h = h * 3 + 1;}while (h >= 1){for (int i = h; i < n; i++){for (int j = i; j >= h && A[j] < A[j - h]; j -= h){if (A[j - h] > A[j]){Swap(ref A[j - h], ref A[j]);}}}h = h / 3;}}

0X05 歸并排序

可視化工具及動(dòng)畫演示

/// <summary>/// 歸并排序/// 首先兩個(gè)子序列分別是有序的(遞歸后最小數(shù)組長(zhǎng)度為1,認(rèn)為數(shù)組長(zhǎng)度為1時(shí)數(shù)組本身是有序的),這里對(duì)兩個(gè)子序列合并,挑選兩個(gè)子序列中最小的放入reg臨時(shí)序列中,直到兩個(gè)子序列中一個(gè)子序列被完全放入后結(jié)束,然后將另一個(gè)子序列復(fù)制到reg臨時(shí)序列中,最后臨時(shí)序列是合并后的有序序列了,將reg復(fù)制到A中/// 時(shí)間復(fù)雜度:假設(shè)遞歸一次的時(shí)間復(fù)雜度為T()/// 執(zhí)行1次遞歸的時(shí)間復(fù)雜度為T(n)=2*T(n/2)+n(兩個(gè)子序列合并,一共長(zhǎng)度為n)/// 執(zhí)行2次遞歸的時(shí)間復(fù)雜度為T(n)=4*T(n/2)+2n/// 執(zhí)行3次遞歸的時(shí)間復(fù)雜度為T(n)=8*T(n/8)+3n/// 類似二叉樹(shù)的層數(shù),層級(jí)=log2(n)+1/// 代入得T(n)=nT(1)+log2(n)*n/// 時(shí)間復(fù)雜度O=T(n)=nT(1)+log2(n)*n=O(nlog2(n))=(nlogn)/// /// </summary>/// <param name="A"></param>public void MergeSort(int[] A){int n = A.Length;int[] reg = new int[n];MergeSort(A, reg, 0, n - 1);}void MergeSort(int[] A, int[] reg, int start, int end){if (start >= end){return;}int mid = (start + end) >> 1;int start1 = start;int end1 = mid;int start2 = mid + 1;int end2 = end;MergeSort(A, reg, start1, end1);MergeSort(A, reg, start2, end2);int k = start;//首先兩個(gè)子序列分別是有序的,這里對(duì)兩個(gè)子序列合并,挑選兩個(gè)子序列中最小的放入reg臨時(shí)序列中,直到兩個(gè)子序列中一個(gè)子序列被完全放入后結(jié)束,然后將另一個(gè)子序列復(fù)制到reg臨時(shí)序列中,最后臨時(shí)序列是合并后的有序序列了,復(fù)制會(huì)A中while (start1 <= end1 && start2 <= end2){reg[k++] = A[start1] < A[start2] ? A[start1++] : A[start2++]; //}while (start1 <= end1){reg[k++] = A[start1++];}while (start2 <= end2){reg[k++] = A[start2++];}Array.Copy(reg, start, A, start, end - start + 1);}/// <summary>/// 歸并排序(非遞歸版)/// </summary>/// <param name="A"></param>public void MergeSort_E(int[] A){int n = A.Length;int[] a = A;int[] b = new int[n];int seg, start;for (seg = 1; seg < n; seg += seg){for (start = 0; start < n; start += seg + seg){int low = start, mid = Math.Min(start + seg, n), high = Math.Min(start + seg + seg, n);int k = low;int start1 = low, end1 = mid;int start2 = mid, end2 = high;while (start1 < end1 && start2 < end2)b[k++] = a[start1] < a[start2] ? a[start1++] : a[start2++];while (start1 < end1)b[k++] = a[start1++];while (start2 < end2)b[k++] = a[start2++];}Array.Copy(b, a, n);}}

0X06 快速排序

可視化工具及動(dòng)畫演示

/// <summary>/// 快速排序/// 簡(jiǎn)單說(shuō)是給基準(zhǔn)數(shù)找正確索引位置的過(guò)程./// 快速排序是對(duì)冒泡排序的一種改進(jìn)。/// 首先選取一個(gè)初始值(一般選取待排序序列的第一個(gè)值),通過(guò)一趟排序?qū)⒋判蛐蛄蟹殖蓛蓚€(gè)子序列,使左子序列的所有數(shù)據(jù)都小于這個(gè)初始值,右子序列的所有數(shù)據(jù)都大于這個(gè)初始值,然后再按此方法分別對(duì)這兩個(gè)子序列進(jìn)行排序,遞歸的進(jìn)行上面的步驟,直至每一個(gè)數(shù)據(jù)項(xiàng)都有如下性質(zhì):該數(shù)據(jù)項(xiàng)左邊的數(shù)據(jù)都小于它,右邊的數(shù)據(jù)都大于它,這樣,整個(gè)序列就有序了。/// 時(shí)間復(fù)雜度:O=O(nlogn)和歸并排序推理類似,不再展開(kāi)推理了/// /// </summary>/// <param name="A"></param>public void QuickSort(int[] A){int n = A.Length;QuickSort(A, 0, n - 1);}void QuickSort(int[] A, int low, int high){if (low >= high) return;int pivot = Partition(A, low, high);QuickSort(A, low, pivot - 1);QuickSort(A, pivot + 1, high);}int Partition(int[] A, int low, int high){int pivot = A[low]; //基準(zhǔn)數(shù)選取數(shù)組第一個(gè)元素(哨兵元素)while (low < high){while (low < high && A[high] >= pivot) --high;A[low] = A[high];while (low < high && A[low] <= pivot) ++low;A[high] = A[low];}A[low] = pivot;return low;}public void QuickSort_V(int[] A){Stack<int> stack = new Stack<int>();int pivot;int low = 0;int high = A.Length - 1;int start, end;stack.Push(high);stack.Push(low);while (stack.Count > 0){start = low = stack.Pop();end = high = stack.Pop();if (low >= high)continue;pivot = A[low];while (low < high){while (low < high && A[high] >= pivot) high--;A[low] = A[high];while (low < high && A[low] <= pivot) low++;A[high] = A[low];}A[low] = pivot;stack.Push(low - 1);stack.Push(start);stack.Push(end);stack.Push(low + 1);}}

0X07 堆排序

可視化工具及動(dòng)畫演示
時(shí)間復(fù)雜度參考:堆排序的時(shí)間復(fù)雜度分析

/// <summary>/// 堆排序/// 堆排序(Heapsort)是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。/// 堆排序可以說(shuō)是一種利用堆的概念來(lái)排序的選擇排序。/// 堆的性質(zhì):/// 堆積是一個(gè)近似完全二叉樹(shù)的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì):即子結(jié)點(diǎn)的鍵值或索引總是小于(或者大于)它的父節(jié)點(diǎn)。/// -->大頂堆:每個(gè)節(jié)點(diǎn)的值都大于或等于其子節(jié)點(diǎn)的值,在堆排序算法中用于升序排列;/// -->小頂堆:每個(gè)節(jié)點(diǎn)的值都小于或等于其子節(jié)點(diǎn)的值,在堆排序算法中用于降序排列;/// 堆排序的基本思想是:將待排序序列構(gòu)造成一個(gè)大頂堆,此時(shí),整個(gè)序列的最大值就是堆頂?shù)母?jié)點(diǎn)。將其與末尾元素進(jìn)行交換,此時(shí)末尾就為最大值。然后將剩余n-1個(gè)元素重新構(gòu)造成一個(gè)堆,這樣會(huì)得到n個(gè)元素的次小值。如此反復(fù)執(zhí)行,便能得到一個(gè)有序序列了/// 時(shí)間復(fù)雜度:(參考:https://blog.csdn.net/qq_34228570/article/details/80024306/)/// 構(gòu)建初始堆復(fù)雜度:O(n)/// 交換并重建堆復(fù)雜度O(nlogn)/// 真?zhèn)€過(guò)程的復(fù)雜度O=O(n)+O(nlogn)=O(nlogn)/// /// /// </summary>/// <param name="A"></param>public void HeapSort(int[] A){int n = A.Length;int i;// 初始化構(gòu)建堆結(jié)構(gòu),i從最後一個(gè)父節(jié)點(diǎn)開(kāi)始調(diào)整(n/2-1為二叉樹(shù)倒數(shù)第二層最后一個(gè)父節(jié)點(diǎn)) //構(gòu)建后的二叉樹(shù)根節(jié)點(diǎn)為整個(gè)二叉樹(shù)中最大的節(jié)點(diǎn)for (i = n / 2 - 1; i >= 0; i--) //構(gòu)建堆結(jié)構(gòu)(完全二叉樹(shù),大頂堆)MaxHeapify(A, i, n - 1);for (i = n - 1; i > 0; i--){Swap(ref A[0], ref A[i]);MaxHeapify(A, 0, i - 1);}}void MaxHeapify(int[] A, int start, int end){// 建立父節(jié)點(diǎn)指標(biāo)和子節(jié)點(diǎn)指標(biāo)int dad = start;int son = dad * 2 + 1;while (son <= end)// 若子節(jié)點(diǎn)指標(biāo)在範(fàn)圍內(nèi)才做比較{if (son + 1 < end && A[son] < A[son + 1]) son++; // 先比較兩個(gè)子節(jié)點(diǎn)大小,選擇最大的if (A[dad] > A[son]) return;//如果父節(jié)點(diǎn)大於子節(jié)點(diǎn)代表調(diào)整完畢,直接跳出函數(shù)else{ // 否則交換父子內(nèi)容再繼續(xù)子節(jié)點(diǎn)和孫節(jié)點(diǎn)比較Swap(ref A[dad], ref A[son]);dad = son; son = dad * 2 + 1;}}}

0X08 計(jì)數(shù)排序

可視化工具及動(dòng)畫演示

/// <summary>/// 計(jì)數(shù)排序/// 計(jì)數(shù)排序不是一個(gè)比較排序算法/// 計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開(kāi)辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。/// 計(jì)數(shù)排序類似與桶排序,也是用空間換取了時(shí)間,計(jì)數(shù)排序要求數(shù)組必須在一個(gè)確定的區(qū)間內(nèi)。/// 過(guò)程1:1. 首先找出數(shù)組的最大值和最小值;2. 遍歷數(shù)組,以數(shù)字作為鍵,該數(shù)字出現(xiàn)的次數(shù)作為值插入哈希表中;3. 在最小值到最大值這個(gè)區(qū)間內(nèi)遍歷哈希表,將數(shù)字反向插入數(shù)組中。/// 過(guò)程2:/// 根據(jù)待排序集合中最大元素和最小元素的差值范圍,申請(qǐng)額外空間;/// 遍歷待排序集合,將每一個(gè)元素出現(xiàn)的次數(shù)記錄到元素值對(duì)應(yīng)的額外空間內(nèi);/// 對(duì)額外空間內(nèi)數(shù)據(jù)進(jìn)行計(jì)算,得出每一個(gè)元素的正確索引位置;/// 將待排序集合每一個(gè)元素移動(dòng)到計(jì)算得出的正確索引位置上。/// 時(shí)間復(fù)雜度:/// 如果原始數(shù)列的規(guī)模是n,最大最小整數(shù)的差值是m,由于代碼中第1、2、4步都涉及到遍歷原始數(shù)列,運(yùn)算量都是n,第3步遍歷統(tǒng)計(jì)數(shù)列,運(yùn)算量是m,所以總體運(yùn)算量是3n+m,去掉系數(shù),時(shí)間復(fù)雜度是O(n+m)。/// /// 空間復(fù)雜度:/// 如果不考慮結(jié)果數(shù)組,只考慮統(tǒng)計(jì)數(shù)組的話,空間復(fù)雜度是O(m)/// 計(jì)數(shù)排序的局限性:/// 當(dāng)數(shù)組最大和最小差值過(guò)大時(shí),并不適合計(jì)數(shù)排序/// 當(dāng)數(shù)組元素不是整數(shù)(不能轉(zhuǎn)化成整數(shù)計(jì)算的,浮點(diǎn)(用指數(shù)和浮點(diǎn)分部轉(zhuǎn)化)、字符等等)時(shí),也不適合用計(jì)數(shù)排序/// </summary>/// <param name="A"></param>public void CountingSort(int[] A){int n = A.Length;int[] sorting = new int[n];//1.找出數(shù)組中最大值、最小值int max = int.MinValue;int min = int.MaxValue;for (int i = 0; i < n; i++){max = Math.Max(max, A[i]);min = Math.Min(min, A[i]);}//初始化計(jì)數(shù)數(shù)組count,設(shè)長(zhǎng)度為mint[] counting = new int[max - min + 1];//2. 對(duì)計(jì)數(shù)數(shù)組各元素賦值,設(shè)長(zhǎng)度為mfor (int i = 0; i < n; i++)counting[A[i] - min]++;//3. 計(jì)數(shù)數(shù)組變形,新元素的值是前面元素累加之和的值for (int i = 1; i < counting.Length; i++)counting[i] += counting[i - 1];//4. 遍歷A中的元素,填充到結(jié)果數(shù)組中去,從后往前遍歷for (int i = n - 1; i >= 0; i--)sorting[--counting[A[i] - min]] = A[i];//5. 將結(jié)果復(fù)制到原始數(shù)組中Array.Copy(sorting, A, n);}

0X09 桶排序

可視化工具及動(dòng)畫演示

/// <summary>/// 桶排序(Bucket Sort)(箱排序)/// 桶排序是計(jì)數(shù)排序的擴(kuò)展版本,計(jì)數(shù)排序可以看成每個(gè)桶只存儲(chǔ)相同元素,而桶排序每個(gè)桶存儲(chǔ)一定范圍的元素,通過(guò)映射函數(shù),將待排序數(shù)組中的元素映射到各個(gè)對(duì)應(yīng)的桶中,對(duì)每個(gè)桶中的元素進(jìn)行排序,最后將非空桶中的元素逐個(gè)放入原序列中。/// 算法過(guò)程:/// 根據(jù)待排序集合中最大元素和最小元素的差值范圍和映射規(guī)則,確定申請(qǐng)的桶個(gè)數(shù);/// 遍歷待排序集合,將每一個(gè)元素移動(dòng)到對(duì)應(yīng)的桶中;/// 對(duì)每一個(gè)桶中元素進(jìn)行排序,并移動(dòng)到已排序集合中。/// 時(shí)間復(fù)雜度:設(shè)桶內(nèi)比較排序?yàn)榭焖倥判?復(fù)雜度nlogn)/// 第一個(gè)循環(huán)為O(N),設(shè)桶的數(shù)量為M,平均每個(gè)桶的元素?cái)?shù)量為N/M,桶內(nèi)以快速排序?yàn)槔秊镹logN,復(fù)雜度為O(M*N/M*log2(N/M)+N)=O(N+N(log2(N)-log2(M)))/// 第二個(gè)循環(huán)為O(2N)/// 總復(fù)雜度為O(3N+N(log2(N)-log2(M)))=O(N+N(logN-LogM))/// 當(dāng)M=N時(shí) 復(fù)雜度為O(N)/// 當(dāng)M=1時(shí) 復(fù)雜度為O(N+Nlog(N))///這里桶內(nèi)排序使用的是鏈表指針?lè)绞?#xff0c;桶內(nèi)復(fù)雜度為O(1),可以忽略,總復(fù)雜度為O(N)/// </summary>/// <param name="A"></param>/// <param name="bucketSize">每個(gè)桶內(nèi)數(shù)據(jù)的預(yù)期數(shù)量</param>public void BucketSort(int[] A, int bucketSize = 1000){int n = A.Length;int index;//1.找出數(shù)組中最大值、最小值int max = int.MinValue;int min = int.MaxValue;for (int i = 0; i < n; i++){max = Math.Max(max, A[i]);min = Math.Min(min, A[i]);}int bucketCount = (max - min) / bucketSize + 1;LinkedList<int>[] bucket = new LinkedList<int>[bucketCount];for (int i = 0; i < n; i++){index = (A[i]-min) / bucketSize;if (bucket[index] == null)bucket[index] = new LinkedList<int>();BucketInsertSort(bucket[index], A[i]);}index = 0;for (int i = 0; i < bucket.Length; i++){LinkedList<int> linkedList = bucket[i];if (linkedList == null) continue;var current = linkedList.First;while (current != null){A[index++] = current.Value;current = current.Next;}}}/// <summary>/// 桶排序的桶內(nèi)排序,這里用的是指針選擇排序,還可使用快速排序/// </summary>/// <param name="list"></param>/// <param name="a"></param>void BucketInsertSort(LinkedList<int> list, int a){var current = list.First;if (current == null || current.Value > a){list.AddFirst(a);return;}while (current != null){if (current.Next == null || current.Next.Value > a){list.AddAfter(current, a);return;}current = current.Next;}}

0X10 基數(shù)排序

可視化工具及動(dòng)畫演示

/// <summary>/// 基數(shù)排序/// 概念1:基數(shù)排序是一種非比較型整數(shù)排序算法,其原理是將整數(shù)按位數(shù)切割成不同的數(shù)字,然后按每個(gè)位數(shù)分別比較。由于整數(shù)也可以表達(dá)字符串(比如名字或日期)和特定格式的浮點(diǎn)數(shù),所以基數(shù)排序也不是只能使用于整數(shù)。/// 概念2:將所有待排序的數(shù)統(tǒng)一為相同的數(shù)位長(zhǎng)度,數(shù)位較短的數(shù)前面補(bǔ)零,然后從低位到高位按位比較,位數(shù)字小的排在前面,大的排在后面,這樣當(dāng)比較第N位時(shí)前N-1位都是有序的,如此循環(huán)的比較,直到最高位比較完成,整個(gè)序列就是有序的了。/// 時(shí)間復(fù)雜度:/// 設(shè)待排序列為n個(gè)記錄,序列中最大值的位數(shù)為d,數(shù)字的基數(shù)為 r,則進(jìn)行鏈?zhǔn)交鶖?shù)排序的時(shí)間復(fù)雜度為O(d(n+r))。當(dāng)分配數(shù)字時(shí)要對(duì)每一個(gè)數(shù)字進(jìn)行按位比較, 而收集數(shù)字時(shí)要進(jìn)行r次收集(如十進(jìn)制數(shù)字就要進(jìn)行從0到9共10次收集操作), 故一趟分配時(shí)間復(fù)雜度為O(n),一趟收集時(shí)間復(fù)雜度為O(r),共進(jìn)行d趟分配和收集。/// /// 基數(shù)排序 vs 計(jì)數(shù)排序 vs 桶排序/// 這三種排序算法都利用了桶的概念,但對(duì)桶的使用方法上有明顯差異:/// 基數(shù)排序:根據(jù)鍵值的每位數(shù)字來(lái)分配桶;/// 計(jì)數(shù)排序:每個(gè)桶只存儲(chǔ)單一鍵值;/// 桶排序:每個(gè)桶存儲(chǔ)一定范圍的數(shù)值;/// </summary>/// <param name="A"></param>public void RadixSort(int[] A){int n = A.Length;const int BASE = 10;int exp = 1;int max = int.MinValue;int[] tmp = new int[n];for (int i = 0; i < n; i++)if (A[i] > max) max = A[i];while (max / exp > 0){int[] bucket = new int[n];for (int i = 0; i < n; i++){bucket[A[i] / exp % BASE]++;}for (int i = 1; i < n; i++){bucket[i] += bucket[i - 1];}for (int i = n - 1; i >= 0; i--){tmp[--bucket[A[i] / exp % BASE]] = A[i];}Array.Copy(tmp, A, n);exp *= BASE;}}

0X11 全部代碼(C#)

全部代碼(github)

0X12 排序算法耗時(shí)測(cè)試

全部代碼(github)
測(cè)試環(huán)境:(.Net4.6.1,win10)

數(shù)組長(zhǎng)度50,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)0.3393ms.
BubbleSort_E總共花費(fèi)0.1743ms.
SelectionSort總共花費(fèi)0.1832ms.
InsertionSort總共花費(fèi)0.1752ms.
InsertionSort_E總共花費(fèi)0.1461ms.
ShellSort總共花費(fèi)0.2367ms.
MergeSort總共花費(fèi)0.4245ms.
MergeSort_E總共花費(fèi)0.4201ms.
QuickSort總共花費(fèi)0.3644ms.
QuickSort_V總共花費(fèi)0.4239ms.
HeapSort總共花費(fèi)0.2615ms.
CountingSort總共花費(fèi)0.2181ms.
BucketSort總共花費(fèi)3.492ms.
RadixSort總共花費(fèi)0.3766ms.

數(shù)組長(zhǎng)度500,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)1.4969ms.
BubbleSort_E總共花費(fèi)1.7962ms.
SelectionSort總共花費(fèi)0.4618ms.
InsertionSort總共花費(fèi)1.2992ms.
InsertionSort_E總共花費(fèi)0.2969ms.
ShellSort總共花費(fèi)0.4273ms.
MergeSort總共花費(fèi)0.4269ms.
MergeSort_E總共花費(fèi)0.2781ms.
QuickSort總共花費(fèi)0.2806ms.
QuickSort_V總共花費(fèi)0.3587ms.
HeapSort總共花費(fèi)0.3837ms.
CountingSort總共花費(fèi)0.2465ms.
BucketSort總共花費(fèi)1.3181ms.
RadixSort總共花費(fèi)0.2294ms.

數(shù)組長(zhǎng)度1000,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)4.9505ms.
BubbleSort_E總共花費(fèi)4.669ms.
SelectionSort總共花費(fèi)1.2467ms.
InsertionSort總共花費(fèi)3.395ms.
InsertionSort_E總共花費(fèi)1.3513ms.
ShellSort總共花費(fèi)1.3414ms.
MergeSort總共花費(fèi)0.5231ms.
MergeSort_E總共花費(fèi)0.4844ms.
QuickSort總共花費(fèi)0.3366ms.
QuickSort_V總共花費(fèi)0.3937ms.
HeapSort總共花費(fèi)0.4446ms.
CountingSort總共花費(fèi)0.2668ms.
BucketSort總共花費(fèi)2.6375ms.
RadixSort總共花費(fèi)0.5076ms.

數(shù)組長(zhǎng)度5000,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)134.6438ms.
BubbleSort_E總共花費(fèi)141.5785ms.
SelectionSort總共花費(fèi)32.566ms.
InsertionSort總共花費(fèi)82.5932ms.
InsertionSort_E總共花費(fèi)17.178ms.
ShellSort總共花費(fèi)22.8029ms.
MergeSort總共花費(fèi)1.0649ms.
MergeSort_E總共花費(fèi)0.7582ms.
QuickSort總共花費(fèi)0.7838ms.
QuickSort_V總共花費(fèi)0.8333ms.
HeapSort總共花費(fèi)1.5709ms.
CountingSort總共花費(fèi)0.2693ms.
BucketSort總共花費(fèi)1.7872ms.
RadixSort總共花費(fèi)0.4634ms.

數(shù)組長(zhǎng)度10000,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)556.6481ms.
BubbleSort_E總共花費(fèi)528.7346ms.
SelectionSort總共花費(fèi)116.9845ms.
InsertionSort總共花費(fèi)306.6125ms.
InsertionSort_E總共花費(fèi)68.4407ms.
ShellSort總共花費(fèi)88.4968ms.
MergeSort總共花費(fèi)1.8969ms.
MergeSort_E總共花費(fèi)1.3673ms.
QuickSort總共花費(fèi)1.4713ms.
QuickSort_V總共花費(fèi)1.4491ms.
HeapSort總共花費(fèi)3.3177ms.
CountingSort總共花費(fèi)0.3216ms.
BucketSort總共花費(fèi)2.9245ms.
RadixSort總共花費(fèi)0.7497ms.

數(shù)組長(zhǎng)度30000,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)4702.0921ms.
BubbleSort_E總共花費(fèi)4660.4316ms.
SelectionSort總共花費(fèi)952.3607ms.
InsertionSort總共花費(fèi)2763.3749ms.
InsertionSort_E總共花費(fèi)610.9831ms.
ShellSort總共花費(fèi)777.4363ms.
MergeSort總共花費(fèi)5.3142ms.
MergeSort_E總共花費(fèi)3.806ms.
QuickSort總共花費(fèi)4.2744ms.
QuickSort_V總共花費(fèi)4.4204ms.
HeapSort總共花費(fèi)10.0902ms.
CountingSort總共花費(fèi)0.5658ms.
BucketSort總共花費(fèi)18.1321ms.
RadixSort總共花費(fèi)1.8263ms.

數(shù)組長(zhǎng)度100000,數(shù)組元素(0–1000).
BubbleSort總共花費(fèi)52096.3052ms.
BubbleSort_E總共花費(fèi)52299.5447ms.
SelectionSort總共花費(fèi)10567.5827ms.
InsertionSort總共花費(fèi)30973.0239ms.
InsertionSort_E總共花費(fèi)6888.8287ms.
ShellSort總共花費(fèi)8548.7395ms.
MergeSort總共花費(fèi)17.985ms.
MergeSort_E總共花費(fèi)13.3151ms.
QuickSort總共花費(fèi)19.1267ms.
QuickSort_V總共花費(fèi)18.6859ms.
HeapSort總共花費(fèi)36.055ms.
CountingSort總共花費(fèi)1.3793ms.
BucketSort總共花費(fèi)195.1004ms.
RadixSort總共花費(fèi)6.1907ms.

通過(guò)測(cè)試數(shù)據(jù)得出:

  • 沒(méi)有空間開(kāi)銷的算法中(不考慮原始數(shù)據(jù)局部有序) 小數(shù)據(jù)量(<500) 直接插入排序最優(yōu)(E版本) ;大數(shù)據(jù)量(>500) 快速排序最優(yōu)(遞歸版本,不考慮遞歸開(kāi)銷)
  • 有空間開(kāi)銷的算法中 (不考慮空間開(kāi)銷大小,大數(shù)據(jù)量>1000)基數(shù)排序和計(jì)數(shù)排序最優(yōu),其次是歸并排序(E版本非遞歸)

桶排序的耗時(shí)不是最優(yōu)的,這里的桶排序沒(méi)有設(shè)置桶的size,所以桶排序耗時(shí)不考慮。
如果有出入或者錯(cuò)誤望各位留言指正

0X13 十大算法比較與分析

  • 這里是參考其他文章的結(jié)論進(jìn)行了羅列,我自己的測(cè)試結(jié)論參考上一節(jié)( 0X13 )節(jié)
  • 直接插入排序 是對(duì)冒泡排序的改進(jìn),比冒泡排序快,但是只適用于數(shù)據(jù)量較小(1000 ) 的排序

  • 希爾排序 比較簡(jiǎn)單,適用于小數(shù)據(jù)量(5000以下)的排序,比直接插入排序快、冒泡排序快,因此,希爾排序適用于小數(shù)據(jù)量的、排序速度要求不高的排序。

  • 直接選擇排序 和冒泡排序算法一樣,適用于n值較小的場(chǎng)合,而且是排序算法發(fā)展的初級(jí)階段,在實(shí)際應(yīng)用中采用的幾率較小。

  • 堆排序 比較適用于數(shù)據(jù)量達(dá)到百萬(wàn)及其以上的排序,在這種情況下,使用遞歸設(shè)計(jì)的快速排序和歸并排序可能會(huì)發(fā)生堆棧溢出的現(xiàn)象。

  • 冒泡排序 是最慢的排序算法,是排序算法發(fā)展的初級(jí)階段,實(shí)際應(yīng)用中采用該算法的幾率比較小。

  • 快速排序 是遞歸的、速度最快的排序算法,但是在內(nèi)存有限的情況下不是一個(gè)好的選擇;而且,對(duì)于基本有序的數(shù)據(jù)序列排序,快速排序反而變得比較慢。

  • 歸并排序 比堆排序要快,但是需要的存儲(chǔ)空間增加一倍。

  • 基數(shù)排序 適用于規(guī)模n值很大的場(chǎng)合,但是只適用于整數(shù)的排序,如果對(duì)浮點(diǎn)數(shù)進(jìn)行基數(shù)排序,則必須明確浮點(diǎn)數(shù)的存儲(chǔ)格式,然后通過(guò)某種方式將其映射到整數(shù)上,最后再映射回去,過(guò)程復(fù)雜。

摘自常用排序算法比較與分析


冒泡排序:
效率太低,通過(guò)冒泡可以掌握swap。

選擇排序:
效率較低,但經(jīng)常使用它內(nèi)部的循環(huán)方式來(lái)找最大值和最小值。

插入排序:
雖然平均效率低,但在序列基本有序時(shí),它很快,所以也有其適用范圍。

希爾排序:
是插入排序的改良,對(duì)空間思維訓(xùn)練有幫助。

快速排序:
快排是軟件工業(yè)中最常見(jiàn)的常規(guī)排序法,其雙向指針掃描和分區(qū)算法是核心。

往往用于解決類似問(wèn)題,特別地partition算法用來(lái)劃分不同性質(zhì)的元素,
partition->selectK,也用于著名的top問(wèn)題
O(NlgN),但是如果主元不是中位數(shù)的話,特別地如果每次主元都在數(shù)組區(qū)間的一側(cè),復(fù)雜度將退化為N2
工業(yè)優(yōu)化:三點(diǎn)取中法,絕對(duì)中值法,小數(shù)據(jù)量用插入排序
快排重視子問(wèn)題拆分

歸并排序:
空間換時(shí)間——逆序?qū)?shù),

歸并重視子問(wèn)題的解的合并

堆排序:
用到了二叉堆數(shù)據(jù)結(jié)構(gòu),是繼續(xù)掌握樹(shù)結(jié)構(gòu)的起手式。=插排+二分查找

上面7種都是基于比較的排序,可證明它們?cè)谠仉S機(jī)順序情況下最好是NlgN的,用決策樹(shù)證明

下面三個(gè)是非比較排序,在特定情況下會(huì)比基于比較的排序要快:

計(jì)數(shù)排序:
可以說(shuō)是最快的:O(N+k),k=maxOf(sourceArr),用它來(lái)解決問(wèn)題時(shí)必須注意如果序列中的值分布非常廣(最大值很大,元素分布很稀疏),
空間將會(huì)浪費(fèi)很多
所以計(jì)數(shù)排序的適用范圍是:序列的關(guān)鍵字比較集中,已知邊界,且邊界較小

桶排序:
先分桶,再用其他排序方法對(duì)桶內(nèi)元素排序,按桶的編號(hào)依次檢出。(分配-收集)
用它解決問(wèn)題必須注意序列的值是否均勻地分布在桶中。
如果不均勻,那么個(gè)別桶中的元素會(huì)遠(yuǎn)多于其他桶,桶內(nèi)排序用比較排序,極端情況下,全部元素在一個(gè)桶內(nèi),還是會(huì)退化成NlgN。

其時(shí)間復(fù)雜度是:時(shí)間復(fù)雜度: O(N+C),其中C=N(logN-logM),約等于NlgN
N是元素個(gè)數(shù),M是桶的個(gè)數(shù)。

基數(shù)排序:
kN級(jí)別(k是最大數(shù)的位數(shù))是整數(shù)數(shù)值型排序里面又快又穩(wěn)的,無(wú)論元素分布如何,
只開(kāi)辟固定的輔助空間(10個(gè)桶)

對(duì)比桶排序,基數(shù)排序每次需要的桶的數(shù)量并不多。而且基數(shù)排序幾乎不需要任何“比較”操作,而桶排序在桶相對(duì)較少的情況下,桶內(nèi)多個(gè)數(shù)據(jù)必須進(jìn)行基于比較操作的排序。因此,在實(shí)際應(yīng)用中,對(duì)十進(jìn)制整數(shù)來(lái)說(shuō),基數(shù)排序更好用。

摘自10種排序算法的對(duì)比分析

0X14 數(shù)據(jù)結(jié)構(gòu)可視化工具

可視化工具及動(dòng)畫展示地址:舊金山大學(xué)|數(shù)據(jù)結(jié)構(gòu)可視化


十大排序算法可視化工具及動(dòng)畫演示展示

選擇上面的按鈕就可以播放啦

選擇上面的按鈕就可以播放啦

點(diǎn)擊向后跳就然后點(diǎn)上面的某個(gè)排序按鈕就可以重新播放啦

總結(jié)

以上是生活随笔為你收集整理的十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产视频一区二区在线播放 | 婷婷中文在线 | 成人免费网站在线观看 | 国产精品久久久久久久久大全 | 久久人人爽人人爽人人片av软件 | 日本中文字幕在线播放 | www亚洲一区 | 欧美天天综合网 | 国产免费专区 | 国产精品久久99综合免费观看尤物 | av官网在线 | 国产免费成人av | 天天色综合久久 | 丁香综合 | 91在线精品秘密一区二区 | 综合在线亚洲 | 天天爱天天操 | 欧美一级免费 | 久草在线综合网 | 免费在线精品视频 | 亚洲精品456在线播放第一页 | 久久免费毛片视频 | 在线观看91视频 | 六月丁香在线视频 | 最近中文字幕免费av | 免费日韩一区 | 久久综合99 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 在线观看岛国片 | 中文字幕在线观看你懂的 | 一区二区三区在线免费观看视频 | 国产一级特黄电影 | 狠狠撸电影 | av怡红院| 国产黄在线看 | 亚洲成人第一区 | 天堂av免费看 | 欧美另类交人妖 | 亚洲高清av| 亚洲自拍偷拍色图 | 最近中文字幕完整视频高清1 | 欧美 日韩 视频 | 在线亚洲午夜片av大片 | 日日干av| 国产韩国日本高清视频 | 久久久精品国产一区二区电影四季 | 日韩资源在线 | 狠狠插狠狠操 | 免费视频一区二区 | 美女视频免费精品 | 国产精品国产自产拍高清av | 日韩在线视频免费播放 | 中文字幕九九 | 黄色免费电影网站 | 日韩在线观看视频中文字幕 | 久久精品专区 | 综合色播 | 天堂av官网| 午夜精品久久一牛影视 | 国产成人综合在线观看 | 久草国产视频 | 欧美久久久久久久久中文字幕 | 狠狠五月婷婷 | 日韩免费高清在线观看 | 黄免费在线观看 | 国产一级片久久 | 日韩在线观看视频中文字幕 | zzijzzij亚洲成熟少妇 | 五月婷婷丁香色 | 久久精品国产一区 | 久久久久久久久综合 | 久久1电影院 | 日韩av中文在线 | 四虎www| 免费视频xnxx com | 国产一级高清视频 | 国产精品免费av | 国产一级一片免费播放放a 一区二区三区国产欧美 | 国色天香在线观看 | 999久久久免费精品国产 | 国产伦精品一区二区三区高清 | 久久激情小视频 | 色婷婷综合久久久中文字幕 | 久久久国产日韩 | 欧美日韩后 | 一级精品视频在线观看宜春院 | 美女性爽视频国产免费app | 国产亚洲婷婷 | a黄色一级片| 91麻豆精品国产自产 | 99久热在线精品视频观看 | 久久涩涩网站 | 中文字幕在线免费播放 | 国产一级精品绿帽视频 | 国产一区视频在线播放 | 日韩高清一二三区 | 国内精品久久久久久久影视麻豆 | 视频在线观看日韩 | 国产高清一| 日本一区二区三区视频在线播放 | 亚洲va综合va国产va中文 | 日韩www在线 | 婷婷av网站 | 蜜臀av性久久久久av蜜臀三区 | 日本公妇在线观看高清 | 国产一区在线精品 | 久久高清免费观看 | 亚洲欧美色婷婷 | 免费中午字幕无吗 | 狠狠色狠狠色合久久伊人 | 日韩久久在线 | 日韩免费一级电影 | 激情综合亚洲 | 极品久久久 | 亚洲精品网址在线观看 | 91福利视频免费观看 | 国内成人精品2018免费看 | 久久精品视频免费播放 | 国产一区欧美日韩 | 国产高清专区 | 亚洲一区免费在线 | 婷婷久久综合网 | 伊人导航 | 午夜精品久久一牛影视 | 五月激情片 | 欧美成a人片在线观看久 | 玖玖在线观看视频 | 亚洲精品免费在线播放 | 日本久热| 丁香花在线视频观看免费 | 日韩亚洲在线视频 | 十八岁免进欧美 | 91久久一区二区 | 亚洲免费专区 | 97在线看片 | 最近最新mv字幕免费观看 | 日韩高清在线一区二区三区 | 亚洲国产精品电影在线观看 | 中文字幕久久久精品 | 精品久久久久久久久久久久久久久久 | 天天草天天 | 91九色国产视频 | 久久综合国产伦精品免费 | 久久成人精品视频 | 91香蕉视频污在线 | 亚洲黄色免费 | 国产精品婷婷 | 日韩精品1区2区 | 在线探花| 92中文资源在线 | 国产无遮挡猛进猛出免费软件 | 人人草在线视频 | 国产精品日韩 | 97超碰在线久草超碰在线观看 | 99色在线播放 | 国产日韩欧美视频 | 国产麻豆成人传媒免费观看 | 美女网站视频免费都是黄 | av三级在线看 | 久久精品国产第一区二区三区 | 一级黄色片在线 | 久久这里有精品 | 欧美成年网站 | 国产精品欧美一区二区 | 一区二区 不卡 | 久久激情久久 | 中文字幕免费高清 | 日韩夜夜爽 | 91香蕉视频在线下载 | 综合网伊人 | 国产日产精品一区二区三区四区的观看方式 | 久久久久黄 | 色婷婷激情电影 | 久久99精品一区二区三区三区 | 国产又粗又猛又色又黄网站 | 国产又粗又猛又黄又爽的视频 | 久久精品久久久久 | av福利在线免费观看 | 久久久久久网站 | 欧美日韩69 | av亚洲产国偷v产偷v自拍小说 | 欧美精品一二三 | 免费在线黄 | 中文字幕三区 | 日本公妇色中文字幕 | 成人动漫精品一区二区 | 色婷婷国产精品一区在线观看 | 操碰av| 免费久久精品视频 | 国产成人一区二区三区在线观看 | 性色av免费看 | 色婷婷激情四射 | 999视频网站 | 日韩一区在线播放 | 一区三区视频在线观看 | 国产一级精品视频 | 日韩综合精品 | 午夜精品久久久久久久久久 | 欧美福利网站 | 欧美激情综合网 | 曰韩在线 | 最新真实国产在线视频 | 九九热精品在线 | 日韩激情三级 | 久久国产精品一区二区 | 婷婷亚洲综合五月天小说 | 久久久久久久久久久网 | av片免费播放 | 日韩午夜一级片 | 色老板在线 | 国产精品扒开做爽爽的视频 | 黄色国产在线观看 | 高清久久久久久 | 久草在线视频在线 | 91麻豆精品国产91久久久久久久久 | 久久影院午夜论 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲国产精品久久久久久 | 日韩av高潮| 日韩高清激情 | 国产成人一区二区三区久久精品 | 亚洲综合网站在线观看 | 一级一片免费看 | 婷婷激情久久 | 国产午夜精品视频 | 日韩黄色免费在线观看 | 超碰免费在线公开 | 丁香婷婷久久久综合精品国产 | 999久久久久久久久久久 | 国产又粗又硬又爽视频 | 久久午夜鲁丝片 | 五月婷婷综合网 | 欧美热久久| 国产剧情一区二区在线观看 | 91免费的视频在线播放 | 亚洲视频一 | 国产福利资源 | 国产小视频在线播放 | 免费三级黄 | 久久综合九色综合欧美狠狠 | 国产精品视频最多的网站 | 欧美片网站yy | 在线导航av | 久久天天躁夜夜躁狠狠85麻豆 | 九九热只有精品 | 日韩高清免费在线观看 | 国产精彩视频一区 | 久久影院中文字幕 | 九九视频在线播放 | 久久爱影视i | 欧美日韩激情网 | 国产一区二区中文字幕 | 五月婷婷在线视频观看 | 日本不卡视频 | 国产乱码精品一区二区三区介绍 | 激情视频久久 | 日本中文一级片 | 国产精品久久久久三级 | 免费色av| 亚洲在线日韩 | 欧美网址在线观看 | 最新av在线免费观看 | 日韩视频专区 | 国产精品久久久久久a | 国产一二三区在线观看 | 国产在线小视频 | 国产免费精彩视频 | 亚洲日本欧美在线 | 色婷婷av国产精品 | 99久久婷婷国产 | 欧美91精品久久久久国产性生爱 | 国产精品久久久久久久久久久久久 | 国产日产亚洲精华av | 国产在线观看99 | 中文字幕在线观看第一页 | 欧美日韩在线免费观看 | 在线免费看黄色 | 亚洲欧洲国产日韩精品 | 成人网大片 | 在线视频婷婷 | 欧美性色19p | 久久一区二区三区四区 | 超碰在线97免费 | 99久久国产免费看 | 欧美精品视 | 毛片美女网站 | 九九精品视频在线看 | 国产精品亚洲综合久久 | 激情av综合 | 韩国一区在线 | 天天色天天操天天爽 | 最新av免费在线观看 | 不卡视频在线看 | 成人免费中文字幕 | 最近中文字幕 | 日韩久久激情 | 色网址99 | 日韩精品久久中文字幕 | 一区二区三区在线免费观看 | 免费午夜在线视频 | 中文字幕在线高清 | 91麻豆精品国产91久久久无限制版 | 国产糖心vlog在线观看 | 91精品一区二区三区久久久久久 | 又黄又刺激视频 | 亚洲日日日 | 亚洲国产精品久久久久 | 中文字幕在线观看日本 | 国产精品久久久久久久久久不蜜月 | 亚洲精品在线免费观看视频 | 丁香激情五月婷婷 | 成人99免费视频 | 黄色大片免费播放 | 日本激情动作片免费看 | 久久精国产 | 成人在线播放网站 | 婷婷久久综合网 | 色婷婷导航 | 久草男人天堂 | 狠狠撸电影 | 日韩欧美在线观看一区二区 | 成人免费看片网址 | 日韩免费av片 | 久久精品国产久精国产 | 欧美日韩久久不卡 | 免费色黄| 欧美日韩视频精品 | 国产91精品久久久久久 | 色99网 | 99久久精品免费看国产麻豆 | 日本在线观看中文字幕无线观看 | 中文字幕资源在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | av免费看看| 在线免费观看的av网站 | 婷婷久久久久 | 日韩精品一区二区三区视频播放 | 九九一级片 | 久久久久区 | 五月婷婷视频在线 | 亚洲第二色 | 国产专区日韩专区 | 久久呀 | 精品国产电影 | 日日草夜夜操 | 成人av中文字幕在线观看 | 中文字幕影片免费在线观看 | 欧美日韩激情视频8区 | 最近中文字幕大全 | 精品国产1区2区 | av电影中文字幕在线观看 | 久久再线视频 | 成人免费视频网 | 人人dvd| 国产乱对白刺激视频在线观看女王 | 国产区精品| 日韩理论在线播放 | 日韩区欠美精品av视频 | 91精品91| 欧美视频www | 黄色的片子 | 国产伦精品一区二区三区… | 欧美成人基地 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 91麻豆精品国产午夜天堂 | 天天玩天天干 | 国产精品中文久久久久久久 | 99中文字幕在线观看 | 欧美国产高清 | 国产精品麻豆果冻传媒在线播放 | 中文字幕日韩精品有码视频 | 91香蕉视频色版 | 亚洲va欧美 | 国产三级香港三韩国三级 | 91免费看片黄 | 热re99久久精品国产66热 | av免费看看 | 一区二区网 | 国产一级二级在线播放 | 国产高清视频免费 | av线上免费观看 | 天天操天天拍 | av成人在线看 | 蜜臀91丨九色丨蝌蚪老版 | 丁香影院在线 | 久久精品久久久久久久 | 久久精品视频网站 | 天天色图 | 国产极品尤物在线 | av免费高清观看 | 精品视频国产一区 | 91传媒免费在线观看 | 在线99热| 精品国产自 | 丁香电影小说免费视频观看 | 久草在线视频资源 | 色婷婷综合久久久久 | 国产黄视频在线观看 | 天堂av最新网址 | 美女露久久 | 国产成年人av | 九九九九热精品免费视频点播观看 | 天天操天天谢 | 日本黄色免费播放 | 日韩欧美亚州 | 欧美日韩一级久久久久久免费看 | 奇米网444| 韩国中文三级 | 日本 在线 视频 中文 有码 | 日韩免 | 在线播放日韩 | 日本韩国欧美在线观看 | 亚洲亚洲精品在线观看 | 九色91福利 | 国产精品福利小视频 | 婷婷六月中文字幕 | 欧美久久影院 | 国产亚洲va综合人人澡精品 | 国产精品久久久av | 狠狠干2018 | 日日干美女 | 久久久久久久久久久久影院 | 国产精品视频久久 | 色婷婷在线播放 | 亚洲天天在线日亚洲洲精 | 91在线小视频 | 麻豆免费在线播放 | 亚洲男男gⅴgay双龙 | 夜又临在线观看 | 亚洲精品国产综合99久久夜夜嗨 | 很黄很污的视频网站 | 成人影视免费看 | 天天操天天干天天综合网 | 久久99视频精品 | 久久综合久久88 | av成年人电影 | 成人一级免费电影 | 国产一级精品视频 | 久久久久国产精品午夜一区 | 亚洲天堂在线观看完整版 | 亚洲精品在线二区 | 亚洲精品免费视频 | 99国产精品久久久久久久久久 | 亚洲区色| 免费看日韩 | 国产高清视频网 | 97视频免费观看 | 成年人毛片在线观看 | 99爱这里只有精品 | 免费视频成人 | 丝袜足交在线 | 麻豆国产精品永久免费视频 | 久草精品免费 | 国产96在线视频 | 久久观看 | 久久久毛片 | 制服丝袜亚洲 | 美女黄视频免费 | 久久精品国产第一区二区三区 | 伊人五月婷| 国产一级久久久 | 中文字幕在线播放视频 | 在线观看不卡视频 | 麻豆视频观看 | 在线小视频国产 | 五月天综合激情网 | 国产精品欧美久久久久三级 | 国内精自线一二区永久 | 久久久久久久国产精品 | 久久国产精品色婷婷 | 在线看片a| 欧美激情精品一区 | 免费视频91蜜桃 | 亚洲黄色一级视频 | 久久怡红院 | 久久永久视频 | 久久精品久久综合 | 超碰人人99 | 国产爽视频 | 91精品少妇偷拍99 | 91九色成人蝌蚪首页 | 精品国产欧美一区二区三区不卡 | 色永久免费视频 | 亚洲少妇久久 | 国产亚洲永久域名 | 精品久久精品久久 | 亚洲视频1 | 在线观看中文av | 国产精品热 | 91人网站 | 开心激情婷婷 | 射久久久 | jizz18欧美18 | 成人h动漫在线看 | 亚洲一区二区精品视频 | 日韩欧美一区二区三区视频 | 国产伦精品一区二区三区四区视频 | 久久99久久99精品免观看粉嫩 | 国产精品国内免费一区二区三区 | 国产精品毛片久久久久久 | 午夜久久久久久久 | 91亚洲视频在线观看 | 国产精品一区二区免费看 | av在线影视 | 中文字幕第 | 丁香 久久 综合 | 99视频黄| 一区二区 精品 | 中文字幕中文字幕在线一区 | 人人爽人人片 | 五月激情片| 九九免费精品视频在线观看 | 98涩涩国产露脸精品国产网 | 在线免费视频 你懂得 | 天天干,天天插 | 在线看片中文字幕 | 成人小视频在线播放 | 国产69精品久久久久99尤 | 在线观看激情av | 五月天丁香亚洲 | 中文字幕一区二区三区精华液 | 这里只有精品视频在线观看 | 久久五月情影视 | 久久精品久久精品久久精品 | av性网站| 人人爽人人 | 99久久日韩精品视频免费在线观看 | av在线短片 | 黄色福利网| 国产91在线 | 美洲 | 欧美性色综合网 | 波多野结衣电影一区二区三区 | 亚洲精品一区二区三区在线观看 | 成人黄色大片在线免费观看 | 视频国产一区二区三区 | 欧美精品久久久久久久 | 狠狠干,狠狠操 | 国内精品久久久久久久久久久久 | 国产精品去看片 | 午夜婷婷在线播放 | 久久久人人爽 | 911久久香蕉国产线看观看 | 深爱开心激情网 | 又黄又爽的免费高潮视频 | 在线亚洲午夜片av大片 | 久久久久久久久久久久久9999 | 91麻豆精品国产91久久久久久久久 | 日韩av片在线 | 黄色免费在线视频 | 精品婷婷 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 这里有精品在线视频 | 国产午夜一区二区 | 国产精品99久久99久久久二8 | 中文字幕色在线 | 国产中文 | 91av中文字幕 | 欧美一级视频免费 | 国产精品99蜜臀久久不卡二区 | 久久香蕉国产 | 最新日韩在线观看 | 美国av大片 | 久久精品高清视频 | 精品国产一区二区久久 | 韩国av免费观看 | 一区二区三区四区五区六区 | 日本激情视频中文字幕 | 日日夜夜天天操 | 国产精品久久片 | 久久国产剧场电影 | 一色av| 国产精品免费观看在线 | 99视频精品免费视频 | 国产大片免费久久 | 久久久久久久免费看 | 日本在线观看中文字幕 | 国产精品av久久久久久无 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 亚洲黄色av一区 | 国产精品69av | 91麻豆精品国产91久久久无限制版 | 天天插天天爽 | 偷拍精偷拍精品欧洲亚洲网站 | 成人性生交大片免费观看网站 | 黄色日批网站 | 久热免费在线观看 | 午夜精品久久久久久久久久久久久久 | 丁香久久五月 | 91片黄在线观看 | 国产视频1区2区 | 91超级碰碰| 国产精品自产拍在线观看中文 | 热久久精品在线 | 中文字幕在线观看你懂的 | 精品国产一区二区三区噜噜噜 | 69久久久久久久 | 片网站| 国产91精品一区二区麻豆亚洲 | www日日| 免费观看特级毛片 | 久久久精选 | 最新av在线网站 | 国产精品系列在线播放 | 国产一区在线视频 | 日本三级人妇 | 91视频免费网站 | 亚洲视频免费在线观看 | 国产又黄又爽无遮挡 | 色婷婷综合成人av | 欧美国产不卡 | 992tv在线成人免费观看 | 久久综合狠狠综合久久激情 | 欧美综合干 | 五月婷婷中文网 | 西西4444www大胆无视频 | 国产视频欧美视频 | 国产久视频 | 国产一区二区三区四区大秀 | 成人av在线资源 | 在线观看视频一区二区三区 | 欧美激情第一区 | 四虎在线观看网址 | 天堂av一区二区 | 久久久久久久久久久福利 | 国产99久久精品一区二区300 | 在线观看亚洲电影 | 日韩在线观看第一页 | 国产精品久久婷婷六月丁香 | 天堂在线成人 | 日韩精品久久一区二区 | 免费看一级黄色大全 | 久久av观看| 国产精品福利在线播放 | 亚洲色图激情文学 | 最近免费中文字幕大全高清10 | 久久久久久久久久久免费视频 | 国产精品久久人 | 亚洲视频 视频在线 | 婷婷中文字幕综合 | 国产成人精品在线 | 久操视频在线观看 | a级国产乱理伦片在线观看 亚洲3级 | 激情五月综合 | 日日夜夜av | 久久看看 | 草久电影 | 日本在线观看中文字幕 | 97视频久久久 | 91成年人网站 | 超碰人人在线观看 | 日韩二级毛片 | 久久国产精品一二三区 | 日本中文字幕在线一区 | 特级免费毛片 | 国产成人精品亚洲 | 日韩影视精品 | 999成人 | 久久蜜臀av| 亚洲三级在线 | 国产极品尤物在线 | 91精品爽啪蜜夜国产在线播放 | 91亚洲精品久久久蜜桃网站 | 久久这里只有精品23 | 日韩丝袜 | 免费网站看v片在线a | 黄色三级免费看 | 国内精品久久久久国产 | 五月天久久婷婷 | 91 在线视频播放 | 日一日干一干 | 国产馆在线播放 | 日韩免费成人 | 亚洲伊人第一页 | 免费看黄色毛片 | 天天射天天操天天干 | 久久夜色精品国产欧美乱极品 | 久久这里有 | 91桃色免费视频 | 色欧美88888久久久久久影院 | 麻豆成人小视频 | 免费看一级一片 | 国产麻豆视频在线观看 | 亚洲aⅴ免费在线观看 | 国产成人99av超碰超爽 | 成人一区不卡 | 国产精品嫩草55av | 特黄特黄的视频 | 日韩精品免费一区 | 国产一区二区三区 在线 | 日韩夜夜爽 | 国产精品免费不卡 | 国内揄拍国产精品 | 人人爽人人爽 | 国产视频亚洲 | a色视频| a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品视频地址 | 成人av片在线观看 | 国产精品久久久久久吹潮天美传媒 | 在线成人一区二区 | 日韩av电影国产 | 黄av在线| 99tvdz@gmail.com| 黄色av影院 | 成人毛片a | 日操操 | 粉嫩av一区二区三区四区五区 | 久久国产麻豆 | 国产精品扒开做爽爽的视频 | 日韩欧美在线高清 | 午夜视频欧美 | 揉bbb玩bbb少妇bbb | 久久公开视频 | 99爱在线| 91成熟丰满女人少妇 | 日日操天天射 | 国产成人免费在线观看 | 久久ww| 国产精品小视频网站 | 在线观看免费av片 | 高清有码中文字幕 | 92精品国产成人观看免费 | 国产精品久久久久久久电影 | 黄色片网站av | 国内精品99| 91精品啪在线观看国产81旧版 | 黄色在线免费观看网站 | 欧美男男激情videos | 2023天天干 | 日韩免费电影网站 | 国产精品18p | 国产视频日韩视频欧美视频 | 精品国产一区二区三区久久久蜜月 | 婷婷视频导航 | 日韩动态视频 | 久久99国产精品视频 | 欧美二区视频 | 日韩在线视频网 | 国产精品成人免费 | 激情丁香综合 | 午夜三级在线 | 黄网站app在线观看免费视频 | 欧美激情在线网站 | 狠狠色噜噜狠狠狠狠 | 天天草天天插 | 亚洲精选国产 | 中文字幕免费高清 | 色婷婷国产 | 免费精品视频在线观看 | 亚洲精品在线观看视频 | 色a综合 | 久久国产综合视频 | 国产精品一区二区av影院萌芽 | 激情五月亚洲 | 91精品久久久久久久99蜜桃 | 日韩手机在线观看 | 成人免费影院 | 天天操夜夜爱 | 视频国产在线 | 在线视频电影 | 成人av网站在线观看 | 999一区二区三区 | 日韩在线播放欧美字幕 | 成年人视频在线免费播放 | 久久久精品国产一区二区三区 | 天天干天天搞天天射 | 黄色片网站大全 | 久久99热这里只有精品国产 | 粉嫩av一区二区三区四区在线观看 | av在线免费网站 | 视频一区二区精品 | 偷拍福利视频一区二区三区 | 又黄又色又爽 | 91人人爱 | 免费在线观看污网站 | 毛片久久久 | 中文在线字幕免费观 | 成人国产精品久久久久久亚洲 | 久久久久97国产 | 欧美性直播| 国产精品成人一区二区三区吃奶 | 99久久精品日本一区二区免费 | 久久精品99国产精品 | 午夜影视一区 | 免费高清在线观看电视网站 | 天天操天天操一操 | 国产午夜激情视频 | 国产中文字幕视频在线观看 | 日韩二区三区在线 | 中文字幕a在线 | 天天搞夜夜骑 | 一区二区三区在线观看免费视频 | 人人插人人玩 | 在线观看 亚洲 | 四虎www | 色婷婷国产在线 | 日韩电影在线观看一区二区 | 黄色小说免费观看 | 天天干天天做天天爱 | 2019中文字幕第一页 | 九九色在线观看 | 日韩欧美99 | 激情影音先锋 | 精品国产乱码久久久久久三级人 | 国产精品一区二区久久国产 | av资源免费观看 | 91av片| 成人久久精品 | 天天爽人人爽 | 麻豆免费在线播放 | 亚洲日本色 | av黄在线播放 | 国产视频九色蝌蚪 | 永久免费的啪啪网站免费观看浪潮 | 久久精品一二三区白丝高潮 | 日韩a级黄色 | 麻豆传媒一区二区 | 免费一级特黄毛大片 | 激情丁香5月 | 91精品国产综合久久福利 | 成人a免费| 亚洲激情免费 | 日韩综合视频在线观看 | 成人av在线电影 | 五月婷婷久久综合 | 日韩久久久久久久 | 一区二区理论片 | 日韩精品一区二区在线 | 久久综合毛片 | 一区二区视频免费在线观看 | 久久国产美女视频 | 日韩a在线播放 | www91在线| 色噜噜在线观看 | 久久久精品高清 | 久久久久久国产一区二区三区 | 久久久久这里只有精品 | 日日夜夜天天 | 香蕉精品视频在线观看 | 久久国产精品视频 | 在线观看免费一级片 | 91精品久久久久久久久久入口 | 亚州av成人 | 激情视频免费在线观看 | 99久久精品一区二区成人 | 国产精品黑丝在线观看 | av再线观看| 成人免费一级 | 天天天干天天天操 | 色婷婷综合视频在线观看 | 欧美aaa级片 | 麻豆精品视频 | 五月天九九| 久久精品网站视频 | 午夜美女福利 | 国产精品99久久久精品 | 在线观看中文字幕 | 欧美综合在线观看 | 欧洲精品亚洲精品 | 成人av片在线观看 | 伊人春色电影网 | 欧美在线观看视频一区二区 | 一区二区三区福利 | 成年人在线观看免费视频 | 免费在线观看视频一区 | 亚洲每日更新 | 97av精品 | 免费在线观看av不卡 | 成年人三级网站 | 91香蕉视频污在线 | 九九交易行官网 | 午夜体验区 | 国产精久久久久久妇女av | 欧美日韩在线观看不卡 | .国产精品成人自产拍在线观看6 | 91九色在线视频 | 欧美日韩高清 | 最近日本韩国中文字幕 | 国产精品18久久久久久久网站 | 成年人在线观看免费视频 | 国产精品久久久免费 | 亚洲午夜精 | 国产一级免费在线观看 | 中文字幕亚洲精品在线观看 | 精品一区二区免费视频 | 免费黄色看片 | 91精品国产91久久久久福利 | 在线中文视频 | 园产精品久久久久久久7电影 | 国产视频在线观看一区二区 | 亚洲国产中文字幕在线观看 | 久久成人人人人精品欧 | 97在线免费观看 | 中文字幕在线视频免费播放 | 欧洲一区二区三区精品 | 91看片在线播放 | 日一日干一干 | 99精品视频在线观看视频 | 日本三级人妇 | 国产99在线| 亚洲综合一区二区精品导航 | 久草在线国产 | 亚洲视频精品在线 | 久久经典国产视频 | 人人超在线公开视频 | a一片一级 | 国产精品精品国产色婷婷 | 国产福利小视频在线 | 特级毛片网 | 一级黄色免费 | 亚洲禁18久人片 | 成人黄色免费观看 | 欧美精品久久久久久久免费 | 亚洲欧美日韩一区二区三区在线观看 | 91探花系列在线播放 | 探花视频在线观看 | 亚洲人成影院在线 | 国产精品久久久久久爽爽爽 | 亚洲 成人 一区 | 亚洲第一久久久 | 欧美日韩破处 | 国产精品视频久久久 | 伊人国产女 | 成人在线观看免费 | 天堂在线视频中文网 | 天天天在线综合网 | 久久久久欠精品国产毛片国产毛生 | 国产精品久久久久久久毛片 | 一二三区av | 丝袜精品视频 | 国产成人精品aaa | 色福利网 | 欧美性色黄大片在线观看 | 综合久久婷婷 | 国产无区一区二区三麻豆 | 精品视频在线免费观看 | 成年人看片 | 中文字幕无吗 | 国产在线污 | 国产日韩av在线 | 午夜影视av| 69av免费视频 | 九九色视频 | 人人干人人上 | 中文字幕亚洲综合久久五月天色无吗'' | 97超碰人人模人人人爽人人爱 | 一级黄色免费网站 | 99久久精品国产亚洲 | 在线小视频国产 | 制服丝袜欧美 | 午夜久久久精品 | 在线观看视频在线观看 | 日韩精品一区在线观看 | 四虎影院在线观看av | 久久久亚洲电影 | 日韩久久精品一区二区三区 | 国产免费a | 精品日韩视频 | 日韩com| 91大神dom调教在线观看 | 国产成人一区三区 | 亚洲婷婷综合色高清在线 | 五月婷婷六月丁香在线观看 | 久影院 | 久久高视频 | 人人干人人草 | 久久影视一区二区 | 精品天堂av | www.色的 | 亚洲有 在线 | 亚洲国产精品电影在线观看 | 亚洲更新最快 | 国产精品高潮呻吟久久久久 | 2020天天干夜夜爽 | 欧美日韩国产精品爽爽 | 五月导航 | 国产精品入口久久 | 欧美日韩国产一区二区三区 | 日韩av成人在线观看 | 婷婷射五月| 日韩欧美久久 | 亚洲一区二区观看 | 久久国产精品视频观看 | 亚洲精品美女久久 | 97精品国自产拍在线观看 | 久在线观看视频 | 日本精油按摩3 | www.日韩免费| 国产成人精品av在线观 | 日韩久久精品一区二区三区下载 | 日韩在线不卡 | 国产精品1区 | 国产精品99免费看 | 97人人爽| 国产一级久久 | 色视频在线看 | 天堂av高清 | www国产亚洲精品久久麻豆 |