常見排序方法整理

2022-05-06 10:42:13 字數 4452 閱讀 3809

/**

建立乙個用於運算元組的工具類,其中包含著常見的對陣列的操作函式如:排序,最值等

@author

jepson

@version

v1.0

*/public

class

arraytool

/**對給定的整數陣列進行直接插入排序

@param

arr 接收乙個元素型別為int的整數陣列

*/public

static

void directinsertsort(int arr) //

直接插入排序

arr[j+1]=temp; //

找到了插入位置之後,將待插入元素放入其中。

} }

/**對給定的整數陣列進行折半插入排序

@param

arr 接收乙個元素型別為int型的整數陣列

*/public

static

void binaryinsertsort(int arr) //

折半插入排序

else

//如果待插入元素不小於中間位置的元素,那麼就應該在右側查詢。

}//while迴圈結束就表示找到了插入位置

for (int j=i-1;j>=low ;--j ) //

有序序列包括插入位置在類的元素都應該後移乙個位置

arr[low]=temp; //

將待插入元素插入找到的位置。。

//arr[high+1]=temp;

}

}/**

對給定的整數陣列進行希爾排序

@param

arr 接收乙個元素型別為int型的整數陣列

*/public

static

void shellsort(int arr) //

希爾排序

arr[j+gap] =temp;}}

}/**對給定的陣列進行交換類的氣泡排序

@param

arr 接收乙個元素型別為int型的整數陣列

*/public

static

void bubblesort(int arr) //

氣泡排序

}if (flag==0) //

如果一趟中沒有發生交換,說明就已經有序,結束執行,直接返回給呼叫函式繼續執行}}

/**對給定的陣列進行交換類的快速排序

@param

arr 接收乙個元素型別為int型的整數陣列

@param

left 接收要排序的資料的第乙個元素的角標

@param

right 接收要排序的資料的最後乙個元素的角標

*/public

static

void quicksort(int arr,int left,int right) //

快速排序

if (j>i) //

將這個元素放入i位置,並讓i右移乙個位置

while (i//

i從左向右掃瞄,找到第乙個不小於temp的元素結束

if (i//

將這個元素放入ji位置,並讓j左移乙個位置

}arr[i]=temp; //

將軸心放入找到的位置。

quicksort(arr,left,i-1); //

遞迴處理軸心的左側部分

quicksort(arr,i+1,right); //

遞迴處理軸心的右側部分

} }

/**對給定的整數陣列進行選擇排序

@param

arr 接收乙個元素為int型的陣列

*/public

static

void selectsort(int

arr)

}//temp = arr[i];

//arr[i]=arr[k];

//arr[k]=temp;

swap(arr,i,k);}}

/**對給定的整數陣列進行堆排序

@param

arr 接收乙個元素為int型的陣列

*/public

static

void heapsort(int

arr)

for (int i=arr.length-1;i>0 ; --i) //

讓堆中的第乙個元素和最後乙個元素交換,並且對交換後的第乙個位置的元素進行調整

}private

static

void sift(int arr , int low,int high) //

對low到high位置,low位置進行堆排序

if (temp//

如果孩子結點更大,就讓最大的孩子放到雙親的位置上去。

else

break

; }

arr[i]=temp; //

將調整的元素放到最值的位置。

}

/**用於給陣列進行元素的位置置換

@param

arr 接收乙個元素為int型的陣列

@param

a 要交換的元素的下標

@param

b 要交換的元素的下標

*/private

static

void swap(int arr,int a, int

b)

/**獲取整數陣列的最大值

@param

arr 接收乙個元素為int型的陣列

@return

返回該陣列的最大元素值

*/public

static

int getmax(int

arr)

}return

max;

}/**獲取整數陣列的最小值

@param

arr 接收乙個元素為int型的陣列

@return

返回該陣列的最大元素值

*/public

static

int getmin(int

arr)

}return

min;

}/**

獲取指定元素在指定陣列中的角標

@param

arr 接收乙個元素為int型的陣列

@param

key 指定的元素

@return

該元素在陣列中的座標

*/public

static

int getindex(int arr,int

key)

}return -1;

}/**使用二分查詢(折半查詢)獲取指定元素在指定陣列中的角標

@param

arr 接收乙個元素為int型的陣列

@param

key 指定的元素

@return

找到了返回該元素在陣列中的座標,沒找到返回 「-插入點-1」

*/public

static

int binarysearch(int arr,int key) //

二分查詢

else

if (arr[mid]//

小於則在右側部分查詢

else

//找到了,就返回座標

return

mid;

}return -low-1; //

沒有找到返回 -插入點-1

}

/**將int型陣列轉換成字串。格式:[e1,e2,......]

@param

arr 接收乙個元素為int型的陣列

@return

返回該陣列的字串表現形式

*/public

static string arraytostring(int

arr)

else

}return

str;

}/**將int型陣列轉換成字串。格式:[e(n),e(n-1),......,e2,e1]

@param

arr 接收乙個元素為int型的陣列

@return

返回該陣列的字串表現形式

*/public

static string arrayreversetostring(int

arr)

else

}return

str;

}}

幾種常見的排序方法整理

幾種常見的排序方法整理 一 直接插入排序 插入排序是一種簡單直觀的排序演算法。通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在從後向前掃瞄的過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。演算法 將需要排序的數列看成乙個陣列,i初始化指向...

常見排序演算法整理

經常忘記簡單的排序演算法,有時間整理下來,便於隨時翻閱,也為了隨用隨取 插入排序演算法 取第乙個數作為有序佇列,從後面的無序佇列中依次取值,在有序佇列中從後向前比較大小,插入到有序佇列中。void insertsort int unsort,int n unsort j temp 選擇排序演算法 與...

常見排序方法

include include using namespace std const int maxsize 100 void myswap int a,int b void bubblesort int a,int len void print int a,int len 氣泡排序 時間複雜度 最壞...