假设有2个整型数组:
list1[] = { 12, 8, 36, 5, -9, 2, 1, 0, 33, 28 };
list2[] = { 22, 18, 6, 5, -6, 2, 10, 30, 0, 7 };
首先,请用选择排序法对list1进行升序排序,并输出结果;
最后,再用冒泡排序法对list2进行降序排序,并输出结果。
#include <stdio.h>
void selectionSort(int arr[], int n);
int main() {
int list1[] = { 12, 8, 36, 5, -9, 2, 1, 0, 33, 28 };
int n = sizeof(list1) / sizeof(list1[0]);
selectionSort(list1, n);
printf("Sorted list1 in ascending order:\n");
for (int i = 0; i < n; i++) {
printf("%d ", list1[i]);
}
printf("\n");
return 0;
}
void selectionSort(int arr[], int n) {
int i, j, min_idx;
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;
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
以下是使用冒泡排序法对list2进行降序排序的代码:
#include <stdio.h>
void bubbleSort(int arr[], int n);
int main() {
int list2[] = { 22, 18, 6, 5, -6, 2, 10, 30, 0, 7 };
int n = sizeof(list2) / sizeof(list2[0]);
bubbleSort(list2, n);
printf("Sorted list2 in descending order:\n");
for (int i = 0; i < n; i++) {
printf("%d ", list2[i]);
}
printf("\n");
return 0;
}
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;
}
}
}
}
#include <stdio.h>
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[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main() {
int list1[] = { 12, 8, 36, 5, -9, 2, 1, 0, 33, 28 };
int n = sizeof(list1) / sizeof(list1[0]);
int i;
for (i = 0; i < n; i++) {
printf("%d ", list1[i]);
}
printf("\n");
selection_sort(list1, n);
for (i = 0; i < n; i++) {
printf("%d ", list1[i]);
}
printf("\n");
return 0;
}
#include <stdio.h>
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 main() {
int list2[] = { 22, 18, 6, 5, -6, 2, 10, 30, 0, 7 };
int n = sizeof(list2) / sizeof(list2[0]);
int i;
for (i = 0; i < n; i++) {
printf("%d ", list2[i]);
}
printf("\n");
bubble_sort(list2, n);
for (i = 0; i < n; i++) {
printf("%d ", list2[i]);
}
printf("\n");
return 0;
}