冒泡排序、插入排序和快速排序的介绍及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 (arr[j] > 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 && arr[j] >= 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);
}
}