冒泡排序:
#include <stdio.h>
// 冒泡排序函数
void bubbleSort(int arr[], int n) {
int i, j, temp;
// 外层循环控制遍历次数
for (i = 0; i < n - 1; i++) {
// 内层循环进行相邻元素的比较和交换
for (j = 0; j < n - 1 - i; j++) {
// 比较相邻的两个元素,如果前一个大于后一个,则交换它们
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 打印数组函数
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90}; // 待排序数组
int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
printf("原数组: \n");
printArray(arr, n);
// 调用冒泡排序
bubbleSort(arr, n);
printf("排序后数组: \n");
printArray(arr, n);
return 0;
}
选择排序:
#include <stdio.h>
// 选择排序函数
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
// 外层循环遍历数组的每个元素
for (i = 0; i < n - 1; i++) {
minIndex = i; // 假设当前位置 i 为最小值的位置
// 内层循环找到最小元素的位置
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j; // 更新最小值的位置
}
}
// 如果最小元素不是当前位置 i,则交换
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
// 打印数组函数
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90}; // 待排序数组
int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
printf("原数组: \n");
printArray(arr, n);
// 调用选择排序
selectionSort(arr, n);
printf("排序后数组: \n");
printArray(arr, n);
return 0;
}