如果使用遞迴實現快速排序。涉及到選取基數和兩層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的長度,直接...