C语言的冒泡排序和快速排序算法使用实例
什么是排序算法
排序算法是一种将一组数据按照特定顺序排列的算法。常见的排序算法包括冒泡排序、快速排序、插入排序、选择排序等。
冒泡排序
冒泡排序是一种简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就交换它们的位置。重复这个过程,直到没有再需要交换的元素,即排序完成。
以下是 C 语言实现冒泡排序的示例程序:
#include <stdio.h>
void bubble_sort(int arr[], int len)
{
int i, j, temp;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int arr[] = { 5, 2, 8, 7, 1 };
int len = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, len);
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
上面的程序中,bubble_sort
函数接收一个数组 arr
和数组的长度 len
作为参数,然后实现了冒泡排序。
打印结果为:1 2 5 7 8,即数组已经按照升序排列好了。
快速排序
快速排序是一种高效的排序算法,它基于分治法,能够将时间复杂度降至 O(n log n)。
以下是 C 语言实现快速排序的示例程序:
#include <stdio.h>
void quick_sort(int arr[], int left, int right)
{
if (left >= right)
{
return;
}
int i = left, j = right, key = arr[left];
while (i < j)
{
while (i < j && arr[j] >= key)
{
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= key)
{
i++;
}
arr[j] = arr[i];
}
arr[i] = key;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main()
{
int arr[] = { 5, 2, 8, 7, 1 };
int len = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, len - 1);
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
上面的程序中,quick_sort
函数接收一个数组 arr
、分区左端点 left
和分区右端点 right
作为参数,然后实现了快速排序。
打印结果为:1 2 5 7 8,即数组已经按照升序排列好了。
结论
从上面两个示例程序可以看出,无论是冒泡排序还是快速排序,它们的核心思想都是将需要排序的元素进行比较和交换。冒泡排序比较简单易懂,但时间复杂度较高。快速排序虽然时间复杂度低,但需要理解递归和分区的概念,较难掌握。
因此,在实际开发中,需要根据实际需求选择合适的排序算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言的冒泡排序和快速排序算法使用实例 - Python技术站