快速排序裡層while迴圈一定要從右邊開始?

2021-09-27 00:12:10 字數 954 閱讀 8321

如果使用遞迴實現快速排序。涉及到選取基數和兩層while迴圈

如下是選取基數為左邊。則裡層while迴圈應該右邊先開始

int target = nums[left];

while(starttarget)

while(left其實都可以。看你基數選取的位置 

同理也可以選取右邊為基數字置 裡層while迴圈左邊開始

int target = nums[right];

while(starttarget)

}

完整**:

基數選左邊:

public class quicksort 

}public int partition(int nums, int left, int right)

while (start < end && nums[start] <= target)

swap(nums, start, end);

}swap(nums, left, end);

return end;

}private void swap(int nums, int start, int end)

}

基數選右邊: 

public class quicksort 

}public int partition(int nums, int left, int right)

while (start < end && nums[end] >= target)

swap(nums, start, end);

}swap(nums, right, start);

return start;

}private void swap(int nums, int start, int end)

}

有一定基礎,如何快速學習程式語言

對於有一定基礎的程式設計師,比如已經掌握了一門程式語言,對演算法有所了解了,怎麼繼續學習其他的程式語言?方法的亮點不在於你用幾本書,更不在於你搜到了幾個tutorial和example,重要的是通過乙個特定的專案目標讓你有興趣去學 記得也特別牢,而方法的成敗關鍵在於你是否能夠把握由點及面的策略。就是...

SQL2005實現迴圈每一行做一定操作。

要對乙個表的每一行做出比較複雜的操作,一般會想到用游標,今天想到使用sql2005中的新函式row number 和while迴圈來對每一行執行操作。示例 如下 department no asdepartmentno,row number over order bydepartment no as...

快速求質因子(一定程度上,比輾轉相除好得多)

借鑑自我的朋友,而他的qq也是需要輸入他qq號的質因子才能加他的,所以很有趣,我想他討教了求質因子的方法,然後加了他,哈哈。方法 按正常方法找乙個數的因子,用乙個for迴圈,遍歷到sqrt num 前,乙個個看能否除的通。這裡有點不一樣,找到乙個質因子後,num num i,減小了num的長度,直接...