C语言用指针进行排序
时间: 2024-06-24 20:02:13 浏览: 9
在C语言中,使用指针进行排序是一种常见的技术,特别是在处理数组或动态内存分配的数据结构时。这里我将简要介绍一种常用的基于指针的排序算法,即冒泡排序(Bubble Sort)和快速排序(Quick Sort)的示例。
1. 冒泡排序:
冒泡排序的基本思想是反复遍历待排序的数组,比较相邻的元素,如果它们的顺序错误就把它们交换过来。虽然效率不高,但操作简单,适合教学。以下是一个简单的冒泡排序指针实现:
```c
void bubble_sort(int* arr, int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (*arr[j] > *arr[j + 1]) {
// 使用指针交换
int temp = *arr[j];
*arr[j] = *arr[j + 1];
*arr[j + 1] = temp;
}
}
}
}
```
2. 快速排序:
快速排序则采用分治策略,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,直到整个序列有序。下面是一个简单的快速排序指针实现:
```c
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = 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++;
// 使用指针交换
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quick_sort(int* arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quick_sort(arr, low, pi - 1); // 对左半部分递归排序
quick_sort(arr, pi + 1, high); // 对右半部分递归排序
}
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)