快速排序
class QuickSort()
{
public void quickSort(int[] nums) {
if(nums==null || nums.length == 0) {
System.out.println("数组为空");
return ;
}
partition(nums,0,nums.length-1);
}
public void partition(int[] nums,int left,int right) {
if(left>=right) {
return;
}
int i = left;
int j = right;
int base = nums[left];
while(i<j) {
while(i<j && nums[j] >= base )
j--;
while(i<j && nums[i] <= base)
i++;
swap(nums,i,j);
}
swap(nums,i,left);
partition(nums,left,i-1);
partition(nums,j+1,right);
}
public void swap(int[] nums,int left,int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
归并排序
class MergeSort()
{
public void mergeSort(int[] nums,int left,int right,int[] temp) {
if(right==left)
return;
int mid = (left+right)/2;
mergeSort(nums,left,mid,temp);
mergeSort(nums,mid+1,right,temp);
merge(nums,left,mid,right,temp);
}
public void merge(int[] nums,int left,int mid,int right,int[] temp) {
int i = left;
int j = mid+1;
int k = left;//使得temp与nums的坐标永远对应
while(i<=mid && j <= right) {
if(nums[i]<nums[j])
temp[k++] = nums[i++];
else
temp[k++] = nums[j++];
}
while(i<=mid)
temp[k++] = nums[i++];
while(j<=right)
temp[k++] = nums[j++];
int t = left;//使得temp与nums的坐标永远对应
while(left<=right)
nums[left++] = temp[t++];
}
}
冒泡排序
public class BubbleSort {
public static void sort(int[] nums){
int t = -1;
int lastExchangeIdx = 0;
int sortBorder = nums.length-1;
for(int i=0;i<nums.length-1;i++){
boolean f = true;
for(int j=0;j<sortBorder;j++) {
if (nums[j]>nums[j+1]){
t = nums[j];
nums[j] = nums[j+1];
nums[j+1] = t;
f = false;
lastExchangeIdx = j;
}
}
if(f)
break;
sortBorder = lastExchangeIdx;
}
}