选择排序算法(C语言实现)[通俗易懂]

选择排序算法(C语言实现)[通俗易懂]#include<stdio.h>voidchoice(int*a,intn){inti,j,temp;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(a[i]>a[j]){…

大家好,又见面了,我是你们的朋友全栈君。

#include <stdio.h>
void choice(int *a,int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
}
int main(int argc, char *argv[])
{
    int a[10]={2,4,7,1,6,9,8,3,0,5};
    int i;
    choice(a,10);
    for(i=0;i<10;i++)
        printf("%d  ",a[i]);

    printf("\n");
    return 0;
}

统一回复一下博友的问题:

首先说句抱歉的是,我这个只是上了裸代码。

这个程序就是选择排序算法。

引用选择排序算法百度百科

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:

初始序列:{2 4 7 1 6 9 8 3 0 5}   

第1趟:2与0交换:0{4 7 1 6 9 8 3 2 5}   

第2趟:0不动,4与1交换:0 1{7 4 6 9 8 3 2 5}   

第3趟:7与2交换:0 1 2{4 6 9 8 3 7 5}   

第4趟:4与3交换:0 1 2 3{6 9 8 4 7 5}   

第5趟:6与4交换:0 1 2 3 4{9 8 6 7 5}

第6趟:9与5交换:0 1 2 3 4 5{8 6 7 9}

第7趟:8与6交换:0 1 2 3 4 5 6{8 7 9}

第8趟:8与7交换:0 1 2 3 4 5 6 7{8 9}

第9趟:排序完成

 

冒泡排序可以查看点击,非常抱歉的是这个里面是冒泡排序的裸代码,查看代码其实可以体会到冒泡排序本质是:排序的数像水泡一样,依次比较,大的数往后移,最后大的数排在最后。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152984.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【HighCharts系列教程】七、导出属性——exporting

    【HighCharts系列教程】七、导出属性——exporting一、exporting属性说明默认情况下,HighCharts支持将图表导出为图片或打印功能的。也就是在图表的右上角有两个按钮。打击即可进行相应的操作。实现导出和打印功能需要引入相应的js文件,也就是

  • java实现MD5加密

    java实现MD5加密1加密方法:1.1java自带jar工具MessageDigest实现 java.security.MessageDigest1.2spring自带的工具DigestUtils实现

  • 微信小程序之事件(bindtap和catchtap)[通俗易懂]

    微信小程序之事件(bindtap和catchtap)[通俗易懂]微信小程序之事件(bindtap和catchtap)微信小程序的事件请参考:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html。在这里不必啰嗦。我们都知道bindtap和catchtap都是当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。但是bind事件绑定不会阻止冒泡事件

  • java List去除重复数据的五种方式

    java List去除重复数据的五种方式以下介绍五种-不同的方法去除Java中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据 保持添加到其中的数据的顺序Java示例使用LinkedHashSet删除arraylist中的重复项。在…

  • leetcode之 两数之和 题目解答C/python

    leetcode之 两数之和 题目解答C/python题目描述链接:https://leetcode-cn.com/problems/two-sum给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]解答C语言:…

  • navicat连接sqlserver数据库Windows验证_pb连接mysql数据库

    navicat连接sqlserver数据库Windows验证_pb连接mysql数据库连接配置方式如图:有时候Navicat并没有初始化安装sqlncli,所以连接的时候会报没有默认驱动,如图:解决方法:在navicat目录下找到对应驱动,点击安装即可,安装过程中设置为全部允许安装…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号