插入排序
void insertSort(int *arr,int n)
{
assert(arr != NULL && n > 0);
for(int i = 1;i < n;i++)
{
int k = arr[i];
for(int j = i-1;j >= 0;j--)
{
if(arr[j] > k)
{
arr[j+1] = arr[j];
arr[j] = k;
}
else
{
break;
}
}
}
}
快速排序
int partition(int *arr,int left,int right)
{
int mid = arr[right];
while(left < right)
{
while(arr[left] <= mid && left < right)
{
left++;
}
if(left < right)
{
arr[right--] = arr[left];
}
while(arr[right] >= mid && left < right)
{
right--;
}
if(left < right)
{
arr[left++] = arr[right];
}
}
arr[left] = mid;
return left;
}
void quickSort(int *arr,int left,int right)
{
assert(arr != NULL);
if(left < right)
{
int mid = partition(arr, left, right);
quickSort(arr,left,mid-1);
quickSort(arr,mid+1,right);
}
}
冒泡排序
void BubbleSort(int *arr,int n)
{
assert(arr != NULL && n > 0);
for(int i = 1;i < n;i++)
{
bool isChanged = false;
for(int j = 0;j <= n-i-1;j ++)
{
if(arr[j] > arr[j+1])
{
int tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
isChanged = true;
}
}
if(!isChanged)
{
break;
}
}
}
选择排序
void selectSort(int *arr,int n)
{
assert(arr != NULL && n > 0);
for(int i = 0;i < n - 1;i++)
{
int k = i;
for(int j = i+1;j < n ;j ++)
{
if(arr[j] > arr[k])
{
k = j;
}
}
if(k != i)
{
int tem = arr[k];
arr[k] = arr[i];
arr[i] = tem;
}
}
}
归并排序