使用一维指向数组元素的指针作为函数参数,编写冒泡法、选择法实现从小到大的排序
时间: 2023-06-08 08:08:15 浏览: 250
C语言程序设计-编写函数用冒泡排序法对数组中的数据进行从小到大的排序;.c
5星 · 资源好评率100%
好的,让我来解答你的问题。
首先,让我们看看冒泡排序的实现。冒泡排序通过比较数组中相邻的两个元素,如果它们的顺序错误就交换它们的位置。这样一来,每一轮排序都会确定一个元素的最终排序位置,直到所有元素都排完序为止。
以下是使用一维指向数组元素的指针作为函数参数实现冒泡排序的示例代码:
```c
void bubble_sort(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 *arr` 表示指向 int 类型数组首元素的指针,`int n` 表示数组中元素的个数。在函数中,我们使用指针来访问数组元素,即 `*(arr+i)` 表示数组中的第 i 个元素。
接下来,让我们看看选择排序的实现。选择排序也是通过比较数组中的元素,但是它每次在未排序部分中选择最小的元素,与已排序部分的末尾交换位置。这样一来,每一轮排序也会确定一个元素的最终排序位置,直到所有元素都排完序为止。
以下是使用一维指向数组元素的指针作为函数参数实现选择排序的示例代码:
```c
void selection_sort(int *arr, int n) {
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (*(arr+j) < *(arr+min_idx)) {
min_idx = j;
}
}
temp = *(arr+i);
*(arr+i) = *(arr+min_idx);
*(arr+min_idx) = temp;
}
}
```
上面的代码中,我们使用了指针来访问数组元素,并使用 `min_idx` 来保存未排序部分中最小元素的下标。
希望上述代码能够帮助你理解使用一维指向数组元素的指针作为函数参数实现冒泡法、选择法实现从小到大的排序的方法。如果你有其他问题,欢迎随时提出。
阅读全文