选择排序的过程如何实现?

如题所述

选择排序的过程如下:

    从待排序的n个元素中找到最大的元素,将其与第n个元素交换位置。

    在剩余的n-1个元素中,再找到最大的元素,将其与第n-1个元素交换位置。

    重复上述步骤,直到只剩下一个元素为止。

其中,每经过一轮,就能确定出一个元素的位置。通过n-1轮选择,就能将这n个元素按照从大到小的顺序排好序。选择排序的时间复杂度为O(n^2)。

下面是使用C语言实现选择排序算法的示例代码:

#include <stdio.h>

void selection_sort(int arr[], int n)

{

int i, j, max_idx;

for (i = 0; i < n - 1; i++) {

max_idx = i;

for (j = i + 1; j < n; j++) {

if (arr[j] > arr[max_idx]) {

max_idx = j;

}

}

// 将找到的最大元素与当前位置交换

int temp = arr[i];

arr[i] = arr[max_idx];

arr[max_idx] = temp;

}

}

int main()

{

int i, n;

int arr[10] = {23, 4, 56, 77, 12, 45, 89, 34, 67, 90};

n = sizeof(arr) / sizeof(arr[0]);

// 输出排序前的列表

printf("排序前:\n");

for (i = 0; i < n; i++) {

printf("%d ", arr[i]);

}

printf("\n");

// 调用选择排序函数

selection_sort(arr, n);

// 输出排序后的列表

printf("排序后:\n");

for (i = 0; i < n; i++) {

printf("%d ", arr[i]);

}

printf("\n");

return 0;

}

选排序流程图:

温馨提示:答案为网友推荐,仅供参考
相似回答