选择排序

选择排序是最简单的排序算法,需要两层循环。每次外层循环一次,都将最小的数移动到数组最前面,然后指针前移一个单位,在剩下的数组中再次找到最小的数。

void selection_sort(int *arr, int len)
{
    for(int i = 0; i < len; i++)
    {
        for(int j = i + 1; j < len; j++)
        {
            if(arr[i] > arr[j])
            {
                swap(&arr[i], &arr[j]);
            }
        }
    }
}

冒泡排序

内层循环执行一遍,就将数组中最大的数“冒泡”到数组最后。

void bubble_sort(int *arr, int len)
{
    for(int i = 0; i < len; i++)
    {
        for(int j = 0; j < len - i - 1; j++)
        {
            if(arr[j] > arr[j + 1])
            {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

插入排序

基本思想是遍历一个数组,将后面的数不断按顺序插到前面。

void insertion_sort(int *arr, int len)
{
    for(int i = 1; i < len; i++)
    {
        int temp = arr[i];
        int j = i - 1;
        while(j >= 0 && temp < arr[j])
        {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap