c语言用指针实现排序
时间: 2023-12-08 11:30:23 浏览: 66
C语言中可以使用指针来实现排序。在给定的代码示例中,有两个不同的例子来演示如何使用指针来实现排序。
第一个例子使用指针来实现整数数组的排序。在这个例子中,首先定义了一个指针变量p,它指向整数数组a的第一个元素a。然后通过循环输入10个整数,并通过指针p将这些整数存储在数组a中。然后重新将指针p指向数组a的第一个元素a,并调用sort函数来对数组a进行排序。最后通过指针p遍历数组a并输出排序后的结果。
第二个例子使用指向指针的指针来实现字符串数组的排序。在这个例子中,首先定义了一个双重指针变量point,它指向指针数组pstr的第一个元素。然后通过循环输入5个字符串,并将这些字符串的首地址赋给指针数组pstr的相应元素。然后将双重指针point传递给sort函数来对字符串数组进行排序。最后通过遍历指针数组pstr输出排序后的结果。
相关问题
c语言用指针实现冒泡排序
以下是使用指针实现冒泡排序的C语言代码示例:
```c
#include <stdio.h>
void bubbleSort(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;
}
}
}
}
int main() {
int arr[10] = {8, 5, 6, 2, 3, 1, 4, 9, 7, 10};
int n = sizeof(arr) / sizeof(arr0]);
printf("排序前:");
for (int i = 0; i < n; i++) {
printf("%d ", *(arr+i));
}
bubbleSort(arr, n);
printf("\n排序后:");
for (int i = 0; i < n; i++) {
printf("%d ", *(arr+i));
}
return 0;
}
```
c语言用指针实现插入排序
以下是使用指针实现插入排序的C语言代码:
```c
#include <stdio.h>
void charu(int *ptr, int n);
int main() {
int a\[\] = {23, 34, 43, 675, 24, 54, 8, 565, 23, 24};
int n = sizeof(a) / sizeof(a\[0\]);
charu(a, n);
for (int i = 0; i < n; i++) {
printf("%5d", a\[i\]);
}
return 0;
}
void charu(int *ptr, int n) {
int *p, *q, *p_end, temp;
p_end = ptr + n;
for (p = ptr + 1; p < p_end; p++) {
if (*p < *(p - 1)) {
temp = *p;
*p = *(p - 1);
for (q = p - 2; q >= ptr && temp < *q; q--) {
*(q + 1) = *q;
}
*(q + 1) = temp;
}
}
}
```
这段代码使用了指针来实现插入排序。函数`charu`接受一个指向整型数组的指针和数组的长度作为参数。在函数内部,使用指针`p`和`q`来遍历数组,并使用指针操作来进行元素的比较和交换。通过比较当前元素和前一个元素的大小,如果需要插入,则将当前元素插入到正确的位置。最后,数组中的元素将按升序排列。
#### 引用[.reference_title]
- *1* *2* *3* [C语言插入排序](https://blog.csdn.net/qq_45659287/article/details/103877329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]