全部给我死记硬背住!!!
一、插入排序
void InsertSort(int *arr, int arrLen)
{
for (int i = 1; i < arrLen; i++)
{
int tmp = arr[i];
int j = 0;
for (j = i; j > 0 && tmp < arr[j-1]; j--)
arr[j]= arr[j-1];
arr[j] = tmp;
}
}
二、选择排序
void SelectSort(int *arr, int arrLen)
{
for(int i = 0; i < arrLen -1; i++)
{
for(int j = i+1; j < arrLen; j++)
{
if(arr[i] > arr[j])
swap(arr[i], arr[j]);
}
}
}
三、冒泡排序
void BubbleSort(int *arr, int arrLen)
{
bool change = false;
for (int i = 0; i < arrLen - 1; i++)
{
change = false;
for (int j = 0; j < arrLen - i - 1; j++)
{
if (arr[j] > arr[j+1])
{
swap(arr[j], arr[j+1]);
change = true;
}
}
if(change == 0) break;
}
}
四、希尔排序
void ShellSort(int *arr, int arrLen)
{
int inc;
for(inc = 1; inc < arrLen; inc = inc*3+1)
;
for(inc = inc /3; inc > 0; inc /=3)
{
for(int i = inc; i < arrLen; i++)
{
int tmp = arr[i];
int j = 0;
for(j = i; j >= inc && arr[j-inc] > tmp; j -= inc)
{
arr[j] = arr[j-inc];
}
arr[j] = tmp;
}
}
}
五、快速排序
滚瓜烂熟之!
void QuickSort(int *arr, int low,int high)
{
if (low >= high) return;
int i = low;
int j = high+1;
while(1)
{
do i++;
while (i <= high && arr[i] < arr[low]);
do j--;
while (j >= low && arr[j] > arr[low]);
if(i > j) break;
swap(arr[i], arr[j]);
}
swap(arr[low], arr[j]);
QuickSort(arr, low, j-1);
QuickSort(arr, j+1, high);
}