冒泡排序、插入排序、选择排序

冒泡排序、插入排序、选择排序

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;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42973214/article/details/81743508
今日推荐