通过下面题目,掌握数组做函数参数、指针指向数组、冒泡排序、选择法排序等内容●编写排序函数void selectsort ( int *array,int n),它的功能是利用选择法实现数组元素从 大到小的排序; void bubblesort (int *array, int n),它的功能是利用冒泡法实现数组元素从小到大的排序。 ●在main函数中定义数组(长度自定),用scanf进行数组的初始化,然后调用selectSort函数进行从大到小排序,再使用bubbleSort函数重新进行从小到大的排序。最后将排好序的数组打印输出。
时间: 2024-02-29 15:51:58 浏览: 116
好的,我知道了。下面是代码实现:
```c
#include <stdio.h>
void selectsort(int *array, int n) {
int i, j, max, temp;
for (i = 0; i < n - 1; i++) {
max = i;
for (j = i + 1; j < n; j++) {
if (array[j] > array[max]) {
max = j;
}
}
if (max != i) {
temp = array[i];
array[i] = array[max];
array[max] = temp;
}
}
}
void bubblesort(int *array, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main() {
int n, i;
printf("请输入数组长度:");
scanf("%d", &n);
int a[n];
printf("请输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
selectsort(a, n);
printf("从大到小排序后的数组:");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
bubblesort(a, n);
printf("从小到大排序后的数组:");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
首先,在 `selectsort` 函数中,我们使用选择排序的方法将数组元素从大到小排序。其基本思想是:每次从待排序的数据中选出最大(或最小)的一个元素,存放到序列的起始位置,直到全部待排序的数据元素排完。
然后,在 `bubblesort` 函数中,我们使用冒泡排序的方法将数组元素从小到大排序。其基本思想是:对于给定的一组记录,从第一条记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置;进行完一轮后,则最后的记录必定是最大的记录。然后再从头开始进行相同的操作,但是最后已经有序的记录不再参与比较,直到最后所有记录都排好序。
最后,在 `main` 函数中,我们先输入数组长度和元素,然后调用 `selectsort` 函数进行从大到小排序,再使用 `bubblesort` 函数重新进行从小到大排序。最后将排好序的数组打印输出。
阅读全文