选择排序(c语言)-创新互联

目录

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网页空间、营销软件、网站建设、金平网站维护、网站推广。

一、什么是选择排序?

二、选择排序思路

三、排序过程

四、代码的实现


一、什么是选择排序?

选择排序(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}

四、代码的实现
#includevoid 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;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


标题名称:选择排序(c语言)-创新互联
当前地址:http://scyanting.com/article/cseipi.html