霍尔果斯建设局网站,住建厅报名考试入口,微官网和移动网站区别,做泥水上哪个网站找事做选择排序是一种简单直观的排序算法#xff0c;其原理如下#xff1a;
1. 遍历数组#xff0c;找到最小#xff08;或最大#xff09;的元素#xff0c;并将其与数组的第一个元素交换位置。 2. 接着在剩下的元素中找到最小#xff08;或最大#xff09;的元素#xff…选择排序是一种简单直观的排序算法其原理如下
1. 遍历数组找到最小或最大的元素并将其与数组的第一个元素交换位置。 2. 接着在剩下的元素中找到最小或最大的元素并将其与数组的第二个元素交换位置。 3. 以此类推每次在剩下的未排序元素中找到最小或最大的元素放到已排序部分的末尾。 4. 最终整个数组就会被排序完成。 定义一个数组 int a[] {46859}要求利用选择排序的方法将数组从小到大排序。 排序的次数因为每排好一个元素那么所需要排的元素个数减一直到排到倒数第二个元素停止将倒数第二个元素也排好后整体数组排序就完成了。所以排序的次数 元素个数 - 1。(冒泡排序的排序次数与该排序的排序次数计算方法相同) 所以以min来记录较小元素的小标i和j结合来遍历数组初始的时候min和i都指向数组的首元素j指向下一个元素j开始从右向左进行遍历数组元素若有元素比min元素更小则进行交换然后min为更小元素的小标i再向右走这样循环到i走到最后一个元素就完成了排序过程如下图所示 代码如下
#include stdio.h
int main() {int i, j, min, t,n;int a[] {4, 6, 8, 5, 9};n sizeof(a) / sizeof(a[0]);for (i 0; i n-1; i) {min i;for (j i1; j n; j) {if (a[j] a[min]) min j;}t a[i];a[i] a[min];a[min] t;}printf(结果为);for (int i 0; i n; i) printf(%d , a[i]);printf(\n);return 0;
}结果为
结果为:4 5 6 8 9
请按任意键继续. . . 选择排序的时间复杂度为O(n^2)并且是不稳定的排序算法。虽然选择排序的时间复杂度较高但是它的实现简单适用于小规模数据的排序。