用C语言给出冒泡算法

当然可以。冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止。

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

#include

// 函数声明 void bubbleSort(int arr[], int n); void swap(int xp, int yp); void printArray(int arr[], int size);

int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr)/sizeof(arr[0]);

printf("原始数组: \n");
printArray(arr, n);

bubbleSort(arr, n);

printf("排序后的数组: \n");
printArray(arr, n);

return 0;

}

// 冒泡排序函数 void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i < n-1; i++) { // 最后i个元素已经是排序好的 for (j = 0; j < n-i-1; j++) { if (arr[j] > arr[j+1]) { swap(&arr[j], &arr[j+1]); } } } }

// 用于交换两个元素的函数 void swap(int xp, int yp) { int temp = xp; xp = yp; yp = temp; }

// 打印数组的函数 void printArray(int arr[], int size) { int i; for (i=0; i < size; i++) printf("%d ", arr[i]); printf("\n"); }

代码解释:

  1. bubbleSort 函数
    • 这个函数实现了冒泡排序算法。
    • 外层循环 for (i = 0; i < n-1; i++) 控制排序的趟数。
    • 内层循环 for (j = 0; j < n-i-1; j++) 用于在每一趟中比较和交换元素。
    • 如果当前元素 arr[j] 大于后一个元素 arr[j+1],则调用 swap 函数交换它们。
  2. swap 函数
    • 这个函数用于交换两个整数的值。
    • 通过传递指针来实现交换,避免了值的复制。
  3. printArray 函数
    • 这个函数用于打印数组中的元素。
  4. main 函数
    • 定义了一个待排序的数组 arr
    • 计算数组的大小 n
    • 调用 bubbleSort 函数对数组进行排序。
    • 在排序前后分别调用 printArray 函数打印数组。

运行结果:

运行上述代码后,你将看到原始数组和排序后的数组输出。

希望这个示例对你有帮助!如果有任何问题,欢迎继续提问。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注