快速排序及其優化

2022-05-17 23:02:08 字數 1343 閱讀 4891

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 先標記基準值 這裡先取最後乙個元素為基準值,記錄起來 之後定義兩個指標,然後前後遍歷,找到比基準值大的或者小的的元素的位置,然後進行標...