当前位置:首页 » 《随便一记》 » 正文

选择排序(c语言)

13 人参与  2023年04月06日 11:05  分类 : 《随便一记》  评论

点击全文阅读


目录

一、什么是选择排序?

二、选择排序思路

三、排序过程

四、代码的实现


一、什么是选择排序?

 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的中数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

二、选择排序思路

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

三、排序过程

例:定义一个数组 int a[8] = {9,3,7,2,6,1,5,8},要求利用选择排序的方法将数组从小到大排序。

排序的次数:因为每排好一个元素,那么所需要排的元素个数减一,直到排到倒数第二个元素停止,将倒数第二个元素也排好后,整体数组排序就完成了。所以排序的次数 = 元素个数 - 1。(冒泡排序的排序次数与该排序的排序次数计算方法相同)

9,3,7,2,6,1,5,8

第一次排序:假设首元素作为整体元素数据最小值,然后从该元素的后一个元素开始每个元素都与该最小值进行比较,假如有比该元素小的值,就用一个变量去记住下标值,最后比较完成后,把两个元素互换位置即可。

第一次排序结果:{1,3,7,2,6,9,5,8}

1,3,7,2,6,9,5,8

第二次排序:因为第一次排序选择的是将首元素作为最小值,最终经过互换位置,首元素排序完成,第二次排序就不需要排序首元素,只需要排序除首元素以外的元素,然后在依照第一次排序的原理进行排序。

第二次排序结果:{1,2,7,3,6,9,5,8}

然后根据第一次排序和第二次排序的原理,最终的排序结果为:{1,2,3,5,6,7,8,9}

四、代码的实现

#include <stdio.h>void arr_out(int a[8])//输出函数{    int i = 0;    for(i = 0;i < 8;i++)    {        printf("%d ",a[i]);    }    printf("\n");}void arr_sort(int *p,int n){    int i,j;    int min = 0;    for(i = 0;i < n - 1;i++)//排序次数    {        min = i;        for(j = i + 1;j < n;j++)        {            if(p[j] < p[min])            {                min = j;//记录交换的元素下标值            }        }        if(i != min)        {            int temp = p[i];            p[i] = p[min];            p[min] = temp;        }      }}int main(){    int a[8] = {0};    int i = 0;    for(i = 0;i < 8;i++)    {        scanf("%d",&a[i]);    }    arr_sort(a,8);//排序函数    arr_out(a);//输出函数    return 0;}


点击全文阅读


本文链接:http://zhangshiyu.com/post/58587.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1