/**建立乙個用於運算元組的工具類,其中包含著常見的對陣列的操作函式如:排序,最值等
@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 氣泡排序 時間複雜度 最壞...