package com.zc.algorithm;
public class quicksort
//如果不大於,則把右邊的數賦值給左邊
arr[left] = arr[right];
//如果左邊的數小於基數,則向右移動
while(left arr[right])//把最大值放在陣列的末尾
if(arr[mid]> arr[right])//把最大值放在陣列的末尾
if(arr[mid]>arr[left])//把最小值放在中間
}//交換
public void swap(int arr, int left, int right)
public int qsort_medianofthree(int arr, int left, int right)
return newarr;
}//快速排序優化2:三數取中+插入排序
public int insertsort(int arr)
arr[j+1] = temp;
}return arr;
}public int qsort_insert(int arr, int left, int right)
//[1]先進行數字調換
medianofthree(arr,left,right);//將中間數放到開頭
int newarr = arr;
if(left < right)
return newarr;
}//快速排序優化3:三數取中+插排+聚集相同元素,解決陣列中部分重複的問題
public int qsortthreeinsertgather(int arr, int low, int high)
//三數取中
medianofthree(arr, low, high);
int first = low;
int last = high;
int left = low;
int right = high;
int leftlength = 0;
int rightlength = 0;
int key = arr[first];
while(first < last)
last--;
}arr[first] = arr[last];
while(firstright&&arr[i]!=key)
qsortthreeinsertgather(arr,low,first-leftlength-1);
qsortthreeinsertgather(arr,first+rightlength+1,high);
return arr;}}
快速排序及其優化
include include 呼叫c 自帶sort include include include using namespace std define max 1000000 define k 12 ifdef debug define new new normal block,file lin...
快速排序及其優化
快速排序是比較經典 常用的演算法,下面簡要介紹其思路。對於乙個陣列,選取某個元素作為切分元素 比如第乙個元素 然後把比這個元素小的都放到它前面,比這個元素大的都放到它後面,這樣切分元素的最終位置就確定了,並且陣列被劃分為兩個子陣列。然後再用同樣的方法分別對子陣列進行排序,最終整個陣列將變成有序的。這...
排序 快速排序及其優化
在排序中交換數字,達到排序的目的 由於 是c語言寫的,所以需要給出交換函式 如果是c 那麼就直接用交換函式 void swap int left,int right 先標記基準值 這裡先取最後乙個元素為基準值,記錄起來 之後定義兩個指標,然後前後遍歷,找到比基準值大的或者小的的元素的位置,然後進行標...