原文链接: https://anran758.github.io/blog/2022/05/18/note-02331/
对自考实践需考核的内容作简要的复习。
排序
选择排序
基本思想: 每一趟在待排序的记录中选出关键字最小的记录,依次存放在已排好序的记录序列的最后,直到全部排序完为止。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#include <iostream> using namespace std;
void SelectSort(int arr[], int n) { int k; for (int i = 0; i < n; i++) { k = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[k]) { k = j; } }
if (k != i) { swap(arr[i], arr[k]); int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } }
int main() { int arr[] = {4, 3, 2, 9, 8, 6, 7, 1, 5, 10}; int n = sizeof(arr) / sizeof(arr[0]); cout << sizeof(arr[0]) << "\n";
SelectSort(arr, n);
for (int i = 0; i < n; i++) { cout << arr[i] << " "; } }
|
插入排序
基本思想: 每次将一个待排序的记录按其关键字的大小插入到前面已经排序好的文件中的适当位置,直到全部记录插入完位置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
void InsertSort(int arr[], int n) { int i, j, tmp; // 对顺序表做直接插入排序 for(i = 1; i < n; i++) { // 当前值比上一个值小,则交换位置 if (arr[i] < arr[i - 1]) {
tmp = arr[i]; // 对有序区逐项向后 diff,寻找合适的插入位置 for(j = i - 1; j >= 0 && tmp < arr[j]; j--) { arr[j + 1] = arr[j]; } arr[j + 1] = tmp; } } }
|
本文转自: https://anran758.github.io/blog/2022/05/18/note-02331/
本站仅做收录,版权归原作者所有。
Post Views: 91