冒泡排序、插入排序、选择排序
1、冒泡排序
冒泡排序是每轮比较未排序部分,从第一个元素开始找最值,比较相邻数字,依次往后推移,最终将最值置于最右。
假设有n个数,外循环循环n-1遍,内循环是n-1在减去当前是第几次外循环。
void bubble_sort(myType *a,int n)//n为数组长度
{
int t = 0,i,j;
for(i = 0;i < n - 1;i++)
{
for(j = 0;j < n - 1 - i;j++)
{
if(a[j] > a[j + 1])
{
t = a[j+1];
a[j+1] = a[j];
a[j] = t;
}
}
}
}
2、插入排序
插入排序是从第二个元素开始缓存,然后向前比较,如果前面的不是最值,往右移动,直到保证从开始到当前位置该缓存值是最值为止,此时插入。
void insert_sort(myType *a,int n)//n为数组长度
{
int i,j,t;
for(i = 1;i < n;i++)
{
t = a[i];
for(j = i;j > 0 && t < a[j - 1];j--)
{
a[j] = a[j - 1];
}
a[j] = t;
}
}
3、选择排序
选择排序是每轮从未排序部分找到极值的位置,然后将该极值与未排序部分的最右侧进行交换。
void select_sort(myType *a,int n)//n为数组长度
{
int min,t;
for(int i = 0;i < n;i++)
{
min = i;
for(int j = i;j < n;j++)
{
if(a[min] > a[j])
{
min = j;
}
}
if(min != i)
{
t = a[min];
a[min] = a[i];
a[i] = t;
}
}
}