//从小到大
template <class T>
void Insertion_Sort(T arry[], int size) {
int i, j;
for (i = 0; i < size; i++) {
T temp = arry[i];
for (j = i; temp <= arry[j-1] && j > 0; j--)
{
arry[j] = arry[j-1];
}
arry[j] = temp;
}
}
//从大到小
template <class T>
void Insertion_Sort(T arry[], int size) {
int i, j;
for (i = 0; i < size; i++) {
T temp = arry[i];
for (j = i; temp >= arry[j-1] && j > 0; j--)
{
arry[j] = arry[j-1];
}
arry[j] = temp;
}
}
2. 选择排序
//从小到大
template <class T>
void Selection_Sort(T arry[], int size)
{
int i, j;
int index = 0;
T temp = 0;
for (i = 0; i < size; i++)
{
index = i;
for (j = i; j < size; j++)
{
if (arry[j] < arry[index])
{
index = j;
}
}
temp = arry[i];
arry[i] = arry[index];
arry[index] = temp;
}
}
//从大到小
template <class T>
void Selection_Sort(T arry[], int size)
{
int i, j;
int index = 0;
T temp = 0;
for (i = 0; i < size; i++)
{
index = i;
for (j = i; j < size; j++)
{
if (arry[j] > arry[index])
{
index = j;
}
}
temp = arry[i];
arry[i] = arry[index];
arry[index] = temp;
}
}
3. 冒泡排序
//从小到大
template <class T>
void Bubble_Sort(T arry[], int size)
{
int i, j;
T temp;
for (i = 0; i < size - 1; i++)
{
for (j = 0; j < size - 1 - i; j++)
{
if (arry[j] > arry[j+1])
{
temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
}
}
//从大到小
template <class T>
void Bubble_Sort(T arry[], int size)
{
int i, j;
T temp;
for (i = 0; i < size - 1; i++)
{
for (j = 0; j < size - 1 - i; j++)
{
if (arry[j] < arry[j+1])
{
temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
}
}
2. 查找算法
1. 顺序查找
template <class T>
int seqSearch(const T list[], int n, const T &key)
{
for (int i = 0; i < n; i++)
if (list[i] == key)
return i;
return -1;
}
2. 二分法查找
template <class T>
int Binary_Search (const T arry[], const int size, const T &value)
{
int low = 0;
int high = size -1;
while(low<=high)
{
int mid = (low + high) / 2;
if(arry[mid] < value)
{
high = mid - 1;
}
else if (arry[mid] > value)
{
low = mid + 1;
}
else
return mid;
}
}