一、冒泡排序
具体过程:
d
代码实现:
void bubble_sort(int* arr,int len)
{
if(arr == NULL || len < 0)
return ;
bool flag = true;
for(int i=0;i<len-1 && flag;i++)
{
flag = false;
for(int j=0;j<len-i-1;j++)
{
if(arr[j] > arr[j+1])
{
flag = true;
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
二、选择排序
void select_sort(int* arr,int len)
{
if(arr == NULL || len<0)
return ;
int min = arr[0];
int min_index = 0;
for(int i=0;i<len-1;i++)
{
min = arr[i];
min_idex = i;
for(int j=0;j<len;j++)
{
if(min > arr[j])
{
min = arr[j];
min_index = j;
}
}
if(i != min_index)
{
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
}
三、插入排序
void insert_sort(int* arr,int len)
{
if(arr == NULL || len < 0)
return ;
int j=0;
int tmp = 0;
for(int i=1;i<len;i++)
{
tmp = arr[i];
for(j=i-1;j>=0;--j)
{
if(arr[j] < tmp)
break;
arr[j+1] = arr[j];
}
arr[j+1] = tmp;
}
}
四、希尔排序(插入排序的变形,插入排序是一数一组,希尔排序是多数一组)
void shell(int *arr,int len,int grp)
{
if(arr == NULL || len<0 || grp<0)
return ;
int j = 0;
int tmp = 0;
for(int i=grp;i<len;i++)
{
tmp = arr[i];
for(j = i-grp;j>=0;j++)
{
if(arr[j] < tmp)
break;
arr[j+grp] = arr[j];
}
arr[j+grp] = tmp;
}
}
五、交换排序
void swap_sort(int *arr,int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
{
if(arr[i] > arr[j])
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}