快排從右開始的原因

2021-09-13 15:05:21 字數 556 閱讀 1786

當我們把基準值設定在左邊時,為什麼要從右邊先開始找?

乙個陣列為:6 1 2 7 9 3 4 5 10 8

先從右往左

前面幾輪查詢不貼了,到i==j時與基準數進行交換,交換之後保證左邊的數都小於基準值右邊的數都大於基準值

從左往右

從有問題開始:i繼續前行當i==j時此時值為9,但是條件限制j不能繼續前行找到比基準值小的,只能被迫停下

此時進行交換:

交換完成並不能保證所有左邊的值都小於基準數,因此當key設定在左側時應當從右開始向左查詢,如果想先從左往右查詢,只需把key設定在右側即可。

快速排序 為何從右開始

這裡兩個while的順序是不能改變的,想一想 假設對如下進行排序 如上圖,6在左,9在右 我們將6作為基數。假設從左邊開始 與正確程式正好相反 while nums i index i j while nums j index j i 按照這個 邏輯,走一遍,i 就會移動到現在的 數字 7 那個位置...

不加班的專案從排期開始

什麼是合理的開發排期?我個人以為合理的開發排期是乙個專案不延期,少加班的時間管理。在目前接觸的各種專案開發中,開始時覺得時間很充足,但是後面做著做著,就變成苦逼開發加班加點趕工期,甚至專案延期。不僅僅是畢業兩三年的同學,甚至有工作近十年的老司機,也會經常遇到這種情況。出現這種情況大家很自然的想到是因...

快排的疑惑?

以前一直不理解快排是什麼東西,那天忘記看了乙個什麼突然感覺明白了快排是什麼東東。然後以公升序排列為例寫了乙個程式。然後按照下面的思路寫了一段 快排就是找乙個數作為基數,與其比較比起比起小的放在左邊,比其大的放其右邊,遞迴其左右,一般情況下是選第乙個數作為基數。void swap int x,int ...