快速排序-三種實(shí)現(xiàn)方式

概念

??????快速排序的基本思想是分治法,選取一個(gè)“基準(zhǔn)數(shù)”作為比較參照,經(jīng)過(guò)排序運(yùn)算傍药,將數(shù)據(jù)分為兩個(gè)規(guī)模更小的數(shù)據(jù)源,其中一個(gè)所有的數(shù)據(jù)都比另一部分的小默穴,然后遞歸進(jìn)行操作從而使數(shù)據(jù)達(dá)到有序的狀態(tài)怔檩。

分治法的基本思想是:將原問(wèn)題分解為若干個(gè)規(guī)模更小但結(jié)構(gòu)與原問(wèn)題相似的子問(wèn)題。遞歸地解這些子問(wèn)題蓄诽,然后將這些子問(wèn)題的解組合為原問(wèn)題的解薛训。

快速排序的時(shí)間復(fù)雜度在最壞情況下是O(N2),平均的時(shí)間復(fù)雜度是O(N*logN)仑氛∫野#快速排序是不穩(wěn)定的算法。

算法穩(wěn)定性:假設(shè)在數(shù)列中存在 a[i] = a[j]锯岖,若在排序之前介袜,a[i] 在a[j] 前面;并且排序之后出吹,a[i] 仍然在a[j] 前面遇伞。則這個(gè)排序算法是穩(wěn)定的!


實(shí)現(xiàn)方式

??????記錄一下三種簡(jiǎn)單的實(shí)現(xiàn)方式捶牢,總結(jié)以代碼+日志的方式展示鸠珠,通過(guò)日志可以清晰的展示出每輪每次的數(shù)據(jù)操作巍耗。前提假設(shè)最終的目標(biāo)排序方式都是升序,可以為了清晰展示出每次具體操作了哪些數(shù)據(jù)渐排,日志[]中括號(hào)內(nèi)展示的為數(shù)組下標(biāo)炬太,()小括號(hào)內(nèi)展示的為本輪的數(shù)據(jù)源,""雙引號(hào)內(nèi)展示的為本次需要交換的兩個(gè)值驯耻,''單引號(hào)內(nèi)展示的為pre(前后指針)的值亲族。

左右指針?lè)?/h3>
  • 選取基準(zhǔn)值,開(kāi)始本輪循環(huán)可缚;
  • 從數(shù)組右側(cè)開(kāi)始遞減比較霎迫,發(fā)現(xiàn)有值小于基準(zhǔn)值,停下記錄該下標(biāo)城看;
  • 從數(shù)組左側(cè)開(kāi)始遞增比較女气,發(fā)現(xiàn)有值大于基準(zhǔn)值,停下記錄該下標(biāo)测柠;
  • 將兩個(gè)下標(biāo)的值進(jìn)行交換炼鞠;
  • 接著循環(huán)重復(fù)第2~4步,直到左右兩指針相遇轰胁,表示這一輪的內(nèi)循環(huán)比較結(jié)束谒主;
  • 此時(shí)左、右指針指向相同的值赃阀,將左霎肯、右指針指向的值與基準(zhǔn)值交換(基準(zhǔn)值歸位),就完成了本輪的排序榛斯;
  • 每輪排序完成后观游,基準(zhǔn)值左邊的都是小于它的,而右邊都是大于等于它的驮俗,接著以基準(zhǔn)值為分割點(diǎn)懂缕,將兩個(gè)子集數(shù)據(jù)源從第1步進(jìn)行遞歸操作;

??????通俗點(diǎn)說(shuō)王凑,就是一個(gè)指針從右側(cè)依次遞減搪柑,一個(gè)指針從左側(cè)依次遞增,當(dāng)發(fā)現(xiàn)符合條件的情況時(shí)索烹,交換兩個(gè)指針指向的值工碾,然后以基準(zhǔn)值為分割點(diǎn),將本次數(shù)據(jù)源分為兩個(gè)小的數(shù)組百姓,依次遞歸循環(huán)該操作渊额。

??????這里需要注意的就是內(nèi)部循環(huán)初始先從右側(cè)開(kāi)始還是左側(cè)開(kāi)始,這里先分析下本例當(dāng)中,要求升序排列端圈,從左側(cè)(最終肯定是小于基準(zhǔn)值的值)取默認(rèn)基準(zhǔn)值焦读,當(dāng)內(nèi)部循環(huán)優(yōu)先從右側(cè)開(kāi)始時(shí),每次循環(huán)完舱权,右側(cè)指針指向的永遠(yuǎn)是小于基準(zhǔn)值的值(排除已經(jīng)是升序的情況),這時(shí)假如本次沒(méi)有交換仑嗅,在循環(huán)外右側(cè)指針(等于左側(cè)指針)就可以與基準(zhǔn)值的進(jìn)行交換宴倍,最終基準(zhǔn)值歸位,小于基準(zhǔn)值的數(shù)都在一側(cè)仓技。
??????相應(yīng)的鸵贬,我們也可以在內(nèi)循環(huán)時(shí)優(yōu)先從左側(cè)判斷,這時(shí)在選基準(zhǔn)值時(shí)就選擇右側(cè)的脖捻;或者嘗試下降序時(shí)的初始方式阔逼,這里就不贅述了……

public static void quickSort(int left, int right) {
    if (left >= right) {
        return;
    }
        
    int l = left;
    int r = right;
    int target = arrs[l];
        
    while (l < r) {
        while (arrs[r] >= target && l < r) {
            r--;
        }
        while (arrs[l] <= target && l < r) {
            l++;
        }
            
        if (l < r) {
            swap(arrs[l], arrs[r]);
        }
    }
        
    if (l != left) {
        swap(arrs[l], arrs[left]):
    }
        
    quickSort(left, l - 1);
    quickSort(l + 1, right);
}
隨機(jī)初始數(shù)組: [29, 13, 86, 2, 55, 7, 22, 33, ] 
################

第1輪,基準(zhǔn)值是29:
交換[2]和[6]位置的值
交換前的數(shù)據(jù): [(29, 13, "86", 2, 55, 7, "22", 33), ] 
交換后的數(shù)據(jù): [(29, 13, "22", 2, 55, 7, "86", 33), ] 
交換[4]和[5]位置的值
交換前的數(shù)據(jù): [(29, 13, 22, 2, "55", "7", 86, 33), ] 
交換后的數(shù)據(jù): [(29, 13, 22, 2, "7", "55", 86, 33), ] 
內(nèi)循環(huán)結(jié)束地沮,當(dāng)前l(fā)=r=[4]嗜浮,與基準(zhǔn)值(下標(biāo)[0])值交換
交換前的數(shù)據(jù): [("29", 13, 22, 2, "7", 55, 86, 33), ] 
交換后的數(shù)據(jù): [("7", 13, 22, 2, "29", 55, 86, 33), ] 
第1輪結(jié)束

第2輪,基準(zhǔn)值是7:
交換[1]和[3]位置的值
交換前的數(shù)據(jù): [(7, "13", 22, "2"), 29, 55, 86, 33, ] 
交換后的數(shù)據(jù): [(7, "2", 22, "13"), 29, 55, 86, 33, ] 
內(nèi)循環(huán)結(jié)束摩疑,當(dāng)前l(fā)=r=[1]危融,與基準(zhǔn)值(下標(biāo)[0])值交換
交換前的數(shù)據(jù): [("7", "2", 22, 13), 29, 55, 86, 33, ] 
交換后的數(shù)據(jù): [("2", "7", 22, 13), 29, 55, 86, 33, ] 
第2輪結(jié)束

第3輪,基準(zhǔn)值是22:
循環(huán)結(jié)束雷袋,當(dāng)前l(fā)=r=[3]吉殃,與基準(zhǔn)值(下標(biāo)[2])值交換
交換前的數(shù)據(jù): [2, 7, ("22", "13"), 29, 55, 86, 33, ] 
交換后的數(shù)據(jù): [2, 7, ("13", "22"), 29, 55, 86, 33, ] 
第3輪結(jié)束

第4輪,基準(zhǔn)值是55:
交換[6]和[7]位置的值
交換前的數(shù)據(jù): [2, 7, 13, 22, 29, (55, "86", "33"), ] 
交換后的數(shù)據(jù): [2, 7, 13, 22, 29, (55, "33", "86"), ] 
內(nèi)循環(huán)結(jié)束楷怒,當(dāng)前l(fā)=r=[6]蛋勺,與基準(zhǔn)值(下標(biāo)[5])值交換
交換前的數(shù)據(jù): [2, 7, 13, 22, 29, ("55", "33", 86), ] 
交換后的數(shù)據(jù): [2, 7, 13, 22, 29, ("33", "55", 86), ] 
第4輪結(jié)束

################
排序最終數(shù)組: [2, 7, 13, 22, 29, 33, 55, 86, ] 

填坑法

  • 選取基準(zhǔn)值,該下標(biāo)即為第一個(gè)坑位A鸠删,開(kāi)始本輪循環(huán)抱完;
  • 從數(shù)組右側(cè)開(kāi)始遞減比較,當(dāng)發(fā)現(xiàn)有值小于基準(zhǔn)值時(shí)冶共,將當(dāng)前值填到坑位A中乾蛤,同時(shí)當(dāng)前下標(biāo)替換為坑位B(注意:初始基準(zhǔn)值被覆蓋掉了,本輪操作最后捅僵,需要將該值填到坑位中)家卖;
  • 從數(shù)組左側(cè)開(kāi)始遞增比較,當(dāng)發(fā)現(xiàn)有值大于基準(zhǔn)值庙楚,將值填到坑位B中上荡,同時(shí)當(dāng)前下標(biāo)替換為坑位A;
  • 不停的重復(fù)第2~3步的操作,直到左右兩指針相遇酪捡,表示這一輪的內(nèi)循環(huán)比較結(jié)束叁征;
  • 將基準(zhǔn)值填到左右指針指向的坑位中,就完成了本輪的排序逛薇;
  • 以基準(zhǔn)值為分割點(diǎn)捺疼,將本次數(shù)據(jù)源分為兩個(gè)小的數(shù)組,依次從第1步遞歸循環(huán)操作永罚;
public static void quickSort(int left, int right) {
    if (left >= right) {
        return;
    }
        
    int l = left;
    int r = right;
    int target = arrs[l];
        
    while (l < r) {
        while (arrs[r] >= target && l < r) {
            r--;
        }
        if (l < r) {
            arrs[l] = arrs[r];
        }
            
        while (arrs[l] <= target && l < r) {
            l++;
        }
        if (l < r) {        
            arrs[r] = arrs[l];
        }
    }
    arrs[l] = target;
    
    quickSort(left, l - 1);
    quickSort(l + 1, right);
}
隨機(jī)初始數(shù)組: [14, 18, 1, 28, 30, 11, 78, 55, ] 
################

第1輪啤呼,基準(zhǔn)值是14,當(dāng)前坑位[0]:
交換前的數(shù)據(jù): [("14", 18, 1, 28, 30, "11", 78, 55), ] 
交換后的數(shù)據(jù): [("11", 18, 1, 28, 30, "11", 78, 55), ] 當(dāng)前坑位[5]呢袱,值是11
交換前的數(shù)據(jù): [(11, "18", 1, 28, 30, "11", 78, 55), ] 
交換后的數(shù)據(jù): [(11, "18", 1, 28, 30, "18", 78, 55), ] 當(dāng)前坑位[1]官扣,值是18
交換前的數(shù)據(jù): [(11, "18", "1", 28, 30, 18, 78, 55), ] 
交換后的數(shù)據(jù): [(11, "1", "1", 28, 30, 18, 78, 55), ] 當(dāng)前坑位[2],值是1
內(nèi)循環(huán)結(jié)束羞福,準(zhǔn)備將基準(zhǔn)值補(bǔ)上最后一個(gè)坑位 [(11, 1, "1", 28, 30, 18, 78, 55), ] 
交換后的數(shù)據(jù): [(11, 1, "14", 28, 30, 18, 78, 55), ] 
第1輪結(jié)束

第2輪惕蹄,基準(zhǔn)值是11,當(dāng)前坑位[0]:
交換前的數(shù)據(jù): [("11", "1"), 14, 28, 30, 18, 78, 55, ] 
交換后的數(shù)據(jù): [("1", "1"), 14, 28, 30, 18, 78, 55, ] 當(dāng)前坑位[1]治专,值是1
內(nèi)循環(huán)結(jié)束卖陵,準(zhǔn)備將基準(zhǔn)值補(bǔ)上最后一個(gè)坑位 [(1, "1"), 14, 28, 30, 18, 78, 55, ] 
交換后的數(shù)據(jù): [(1, "11"), 14, 28, 30, 18, 78, 55, ] 
第2輪結(jié)束

第3輪,基準(zhǔn)值是28看靠,當(dāng)前坑位[3]:
交換前的數(shù)據(jù): [1, 11, 14, ("28", 30, "18", 78, 55), ] 
交換后的數(shù)據(jù): [1, 11, 14, ("18", 30, "18", 78, 55), ] 當(dāng)前坑位[5]赶促,值是18
交換前的數(shù)據(jù): [1, 11, 14, (18, "30", "18", 78, 55), ] 
交換后的數(shù)據(jù): [1, 11, 14, (18, "30", "30", 78, 55), ] 當(dāng)前坑位[4],值是30
內(nèi)循環(huán)結(jié)束挟炬,準(zhǔn)備將基準(zhǔn)值補(bǔ)上最后一個(gè)坑位 [1, 11, 14, (18, "30", 30, 78, 55), ] 
交換后的數(shù)據(jù): [1, 11, 14, (18, "28", 30, 78, 55), ] 
第3輪結(jié)束

第4輪鸥滨,基準(zhǔn)值是30,當(dāng)前坑位[5]:
內(nèi)循環(huán)結(jié)束谤祖,準(zhǔn)備將基準(zhǔn)值補(bǔ)上最后一個(gè)坑位 [1, 11, 14, 18, 28, ("30", 78, 55), ] 
交換后的數(shù)據(jù): [1, 11, 14, 18, 28, ("30", 78, 55), ] 
第4輪結(jié)束

第5輪婿滓,基準(zhǔn)值是78,當(dāng)前坑位[6]:
交換前的數(shù)據(jù): [1, 11, 14, 18, 28, 30, ("78", "55"), ] 
交換后的數(shù)據(jù): [1, 11, 14, 18, 28, 30, ("55", "55"), ] 當(dāng)前坑位[7]粥喜,值是55
內(nèi)循環(huán)結(jié)束凸主,準(zhǔn)備將基準(zhǔn)值補(bǔ)上最后一個(gè)坑位 [1, 11, 14, 18, 28, 30, (55, "55"), ] 
交換后的數(shù)據(jù): [1, 11, 14, 18, 28, 30, (55, "78"), ] 
第5輪結(jié)束
################
排序最終數(shù)組: [1, 11, 14, 18, 28, 30, 55, 78, ] 

前后指針?lè)?/h3>
  • 選取基準(zhǔn)值,定義兩個(gè)指針额湘,cur 表示當(dāng)前指針指向卿吐,pre 默認(rèn)表示cur 指針的前一位;
  • cur 和 pre 指針依次++ 進(jìn)行遞增比較锋华,當(dāng)cur 發(fā)現(xiàn)大于基準(zhǔn)值時(shí)嗡官,pre 暫停遞增(即[pre+1] 指向了一個(gè)大于基準(zhǔn)值的值);
  • cur 接著++ 進(jìn)行遞增比較毯焕,當(dāng)發(fā)現(xiàn)比基準(zhǔn)值小時(shí)衍腥,對(duì)數(shù)組[pre+1] 和 數(shù)組[cur] 的值進(jìn)行交換;
  • 不停的重復(fù)第2~3步操作,直到一輪循環(huán)結(jié)束(即cur 從當(dāng)前數(shù)據(jù)源從左移到了右)婆咸;
  • 內(nèi)循環(huán)結(jié)束后竹捉,將數(shù)組[pre+1] 的值與基準(zhǔn)值進(jìn)行交換;
  • 以基準(zhǔn)值為分割點(diǎn)尚骄,將本次數(shù)據(jù)源分為兩個(gè)小的數(shù)組块差,依次從第1步遞歸循環(huán)操作;
public static void quickSort(int left, int right) {
    if (left >= right) {
        return;
    }
        
    int cur = left;
    int pre = cur - 1;
    int target = arrs[right];
        
    while (cur < right) {
        while (arrs[cur] < target && ++pre != cur) {
            swap(arrs[cur], arrs[pre];
        }
        cur++;
    }
        
    swap(arrs[++pre], arrs[right]);
        
    quickSort(left, pre -1);
    quickSort(pre + 1, right);
}
隨機(jī)初始數(shù)組: [86, 59, 63, 53, 68, 99, 58, 1, ] 
################

第1輪乖仇,基準(zhǔn)值是1憾儒,'pre':[-1],"cur":[0]:
"cur"指針++了: [(86, "59", 63, 53, 68, 99, 58, 1), ] 乃沙,'pre':[-1], "cur":[1]
"cur"指針++了: [(86, 59, "63", 53, 68, 99, 58, 1), ] ,'pre':[-1], "cur":[2]
"cur"指針++了: [(86, 59, 63, "53", 68, 99, 58, 1), ] 诗舰,'pre':[-1], "cur":[3]
"cur"指針++了: [(86, 59, 63, 53, "68", 99, 58, 1), ] 警儒,'pre':[-1], "cur":[4]
"cur"指針++了: [(86, 59, 63, 53, 68, "99", 58, 1), ] ,'pre':[-1], "cur":[5]
"cur"指針++了: [(86, 59, 63, 53, 68, 99, "58", 1), ] 眶根,'pre':[-1], "cur":[6]
"cur"指針++了: [(86, 59, 63, 53, 68, 99, 58, "1"), ] 蜀铲,'pre':[-1], "cur":[7]
內(nèi)循環(huán)結(jié)束,準(zhǔn)備將'++pre'(大于基準(zhǔn)值的值)與基準(zhǔn)值交換: [("86", 59, 63, 53, 68, 99, 58, "1"), ] 
交換后的數(shù)據(jù): [("1", 59, 63, 53, 68, 99, 58, "86"), ] 
第1輪結(jié)束

第2輪属百,基準(zhǔn)值是86记劝,'pre':[0],"cur":[1]:
"cur"指針++了: [1, ('59', "63", 53, 68, 99, 58, 86), ] 族扰,'pre':[1], "cur":[2]
"cur"指針++了: [1, (59, '63', "53", 68, 99, 58, 86), ] 厌丑,'pre':[2], "cur":[3]
"cur"指針++了: [1, (59, 63, '53', "68", 99, 58, 86), ] ,'pre':[3], "cur":[4]
"cur"指針++了: [1, (59, 63, 53, '68', "99", 58, 86), ] 渔呵,'pre':[4], "cur":[5]
"cur"指針++了: [1, (59, 63, 53, '68', 99, "58", 86), ] 怒竿,'pre':[4], "cur":[6]
交換前的數(shù)據(jù): [1, (59, 63, 53, 68, "99", "58", 86), ] 
交換后的數(shù)據(jù): [1, (59, 63, 53, 68, "58", "99", 86), ] 
"cur"指針++了: [1, (59, 63, 53, 68, '58', 99, "86"), ] ,'pre':[5], "cur":[7]
內(nèi)循環(huán)結(jié)束扩氢,準(zhǔn)備將'++pre'(大于基準(zhǔn)值的值)與基準(zhǔn)值交換: [1, (59, 63, 53, 68, 58, "99", "86"), ] 
交換后的數(shù)據(jù): [1, (59, 63, 53, 68, 58, "86", "99"), ] 
第2輪結(jié)束

第3輪耕驰,基準(zhǔn)值是58,'pre':[0]录豺,"cur":[1]:
"cur"指針++了: ['1', (59, "63", 53, 68, 58), 86, 99, ] 朦肘,'pre':[0], "cur":[2]
"cur"指針++了: ['1', (59, 63, "53", 68, 58), 86, 99, ] ,'pre':[0], "cur":[3]
交換前的數(shù)據(jù): [1, ("59", 63, "53", 68, 58), 86, 99, ] 
交換后的數(shù)據(jù): [1, ("53", 63, "59", 68, 58), 86, 99, ] 
"cur"指針++了: [1, ('53', 63, 59, "68", 58), 86, 99, ] 双饥,'pre':[1], "cur":[4]
"cur"指針++了: [1, ('53', 63, 59, 68, "58"), 86, 99, ] 媒抠,'pre':[1], "cur":[5]
內(nèi)循環(huán)結(jié)束,準(zhǔn)備將'++pre'(大于基準(zhǔn)值的值)與基準(zhǔn)值交換: [1, (53, "63", 59, 68, "58"), 86, 99, ] 
交換后的數(shù)據(jù): [1, (53, "58", 59, 68, "63"), 86, 99, ] 
第3輪結(jié)束

第4輪兢哭,基準(zhǔn)值是63领舰,'pre':[2],"cur":[3]:
"cur"指針++了: [1, 53, 58, ('59', "68", 63), 86, 99, ] ,'pre':[3], "cur":[4]
"cur"指針++了: [1, 53, 58, ('59', 68, "63"), 86, 99, ] 冲秽,'pre':[3], "cur":[5]
內(nèi)循環(huán)結(jié)束舍咖,準(zhǔn)備將'++pre'(大于基準(zhǔn)值的值)與基準(zhǔn)值交換: [1, 53, 58, (59, "68", "63"), 86, 99, ] 
交換后的數(shù)據(jù): [1, 53, 58, (59, "63", "68"), 86, 99, ] 
第4輪結(jié)束
################
排序最終數(shù)組: [1, 53, 58, 59, 63, 68, 86, 99, ] 

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锉桑,隨后出現(xiàn)的幾起案子排霉,更是在濱河造成了極大的恐慌,老刑警劉巖民轴,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攻柠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡后裸,警方通過(guò)查閱死者的電腦和手機(jī)瑰钮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)微驶,“玉大人浪谴,你說(shuō)我怎么就攤上這事∫蚱唬” “怎么了苟耻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扶檐。 經(jīng)常有香客問(wèn)我凶杖,道長(zhǎng),這世上最難降的妖魔是什么款筑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任智蝠,我火速辦了婚禮,結(jié)果婚禮上醋虏,老公的妹妹穿的比我還像新娘寻咒。我一直安慰自己,他們只是感情好颈嚼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布毛秘。 她就那樣靜靜地躺著,像睡著了一般阻课。 火紅的嫁衣襯著肌膚如雪叫挟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天限煞,我揣著相機(jī)與錄音抹恳,去河邊找鬼。 笑死署驻,一個(gè)胖子當(dāng)著我的面吹牛奋献,可吹牛的內(nèi)容都是我干的健霹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓶蚂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼糖埋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窃这,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞳别,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后杭攻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祟敛,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年兆解,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馆铁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锅睛,死狀恐怖叼架,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衣撬,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布扮饶,位于F島的核電站具练,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甜无。R本人自食惡果不足惜扛点,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岂丘。 院中可真熱鬧陵究,春花似錦、人聲如沸奥帘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寨蹋。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傅联,已是汗流浹背撒妈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留运褪,地道東北人惊楼。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓玖瘸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親檀咙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雅倒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容