冒泡排序、插入排序和快速排序的介绍及C语言实现


1、排序算法的介绍

排序算法是将一组数据按照某种规则进行排列。

冒泡排序、插入排序、快速排序是最常用的算法。

2、冒泡排序

冒泡排序是的基本思想是通过不断比较相邻的两个元素,将较大的元素向后移动,从而实现排序。冒泡排序的时间复杂度为O(n^2)。

以下是C语言实现冒泡排序的示例代码:

void bubble_sort(int arr[], int n)
{
    int i, j, temp;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1 j if arrj> arr[j+1])
            {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

3、插入排序

插入排序,是将待排序的数据分为两部分,已排序部分和未排序部分。每次从未排序部分中取出一个元素,在已排序部分中找到合适的位置插入该元素,从而实现排序。插入排序的时间复杂度为O(n^2)。

以下是C语言实现插入排序的示例代码:

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

4、快速排序

快速排序是一种分治算法,其基本思想是选择一个基准元素,将待排序的数据分成两部分,小于基准元素的放在左边,大于基准元素的放在右边,然后对左右两部分递归地进行快速排序,从而实现排序。快速排序的时间复杂度为O(nlogn)。

以下是C语言实现快速排序的示例代码:

void quick_sort(int arr[], int left, int right)
{
    if (left < right)
    {
        int i = left, j = right, pivot = arr[left];
        while (i < j)
        {
            while (i < j arrj>= pivot) j--;
            if (i < j) arr[i++] = arr[j];
            while (i < j && arr[i] < pivot) i++;
            if (i < j) arr[j--] = arr[i];
        }
        arr[i] = pivot;
        quick_sort(arr, left, i - 1);
        quick_sort(arr, i + 1, right);
    }
}
原文链接:,转发请注明来源!