引言排序算法是计算机科学中基础且重要的部分,尤其在C语言编程中,排序算法的应用十分广泛。掌握高效的排序算法不仅能提高程序的性能,还能提升编程技巧。本文将深入探讨C语言中的几种常用排序算法,并提供高效检...
排序算法是计算机科学中基础且重要的部分,尤其在C语言编程中,排序算法的应用十分广泛。掌握高效的排序算法不仅能提高程序的性能,还能提升编程技巧。本文将深入探讨C语言中的几种常用排序算法,并提供高效检查技巧,帮助读者轻松掌握。
冒泡排序是一种简单直观的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
void bubbleSort(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; } } }
}快速排序是一种分治算法。它将原始数组分为较小的两个子数组,然后递归地对这两个子数组进行快速排序。
int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return (i + 1);
}
void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); }
}归并排序是一种稳定的排序算法,它将已排序的子序列合并,得到完全有序的序列。
void merge(int arr[], int l, int m, int r) { int i, j, k; int n1 = m - l + 1; int n2 = r - m; int L[n1], R[n2]; for (i = 0; i < n1; i++) L[i] = arr[l + i]; for (j = 0; j < n2; j++) R[j] = arr[m + 1 + j]; i = 0; j = 0; k = l; while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } while (i < n1) { arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j]; j++; k++; }
}
void mergeSort(int arr[], int l, int r) { if (l < r) { int m = l + (r - l) / 2; mergeSort(arr, l, m); mergeSort(arr, m + 1, r); merge(arr, l, m, r); }
}本文介绍了C语言中的冒泡排序、快速排序和归并排序算法,并提供了相应的代码示例和高效检查技巧。通过学习和实践这些技巧,读者可以轻松掌握C语言排序算法,并在实际编程中灵活运用。