今天来学习选择排序
选择排序有多种方法 下面是方法一:
选择排序(Selection Sort)是一种简单但低效的排序算法。它的基本思想是在未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。通过重复这个过程,直到所有元素都排好序为止。
下面是选择排序的C++实现示例:
#include <iostream> #include <chrono> void selectionSort(int arr[], int n) { for (int i = 0; i < n-1; ++i) { int minIndex = i; for (int j = i+1; j < n; ++j) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 交换最小元素和当前位置的元素 int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } void printArray(int arr[], int n) { for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); std::cout << "原始数组: "; printArray(arr, n); // 测量开始时间点 auto start = std::chrono::high_resolution_clock::now(); selectionSort(arr, n); // 测量结束时间点 auto end = std::chrono::high_resolution_clock::now(); std::cout << "排序后数组: "; printArray(arr, n); // 计算程序运行时间(毫秒为单位) auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count(); std::cout << "程序运行时间: " << duration << " 毫秒" << std::endl; return 0; }
结果如下 我有点怀疑是不是测试时间代码写错了
下面是冒泡排序:
#include <iostream> void bubbleSort(int arr[], int n) { for (int i = 0; i < n-1; ++i) { for (int 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; } } } } void printArray(int arr[], int n) { for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); std::cout << "原始数组: "; printArray(arr, n); bubbleSort(arr, n); std::cout << "排序后数组: "; printArray(arr, n); return 0; }
后面的知识建议看书
这几天一直在处理八字循环的包 可能写的有点少。
标签:minIndex,arr,int,void,c++,++,排序,day From: https://www.cnblogs.com/jszs0013/p/17555123.html