选择排序法,思路详解

基本思路:默认数组中第一个元素num[0]为最小的数,让num[0]依次和num[1]~num[最大]进行比较,如果有比num[0]小的元素,就和num[0]交换数值,这样进行n-1轮,就可以依次把最小的数从左到右排序完成。

image.png

下面是选择排序法的代码和每一步的解释:

#include <stdio.h>

int main(){
    //选择排序
    int num[10] = {3,0,1,8,7,2,5,4,9,6} ;
    int temp;
    int n;
    n = sizeof(num)/sizeof(int);
    
    for(int i = 0;i < n - 1;i++){ 
        //首先让num[0]是最小值,再是num[1],num[2]...num[n],共比较n-1次即可得出结果
           
        //从num[i+1]~num[最大]开始分别和num[i]比较,如果比num[i]的值小,就和num[i]交换值,保证最小的值都换到了左边
        for(int j = i +1;j < n;j++){            
            if(num[j] < num[i]){
                //交换值
                int n = num[i];
                num[i] = num[j];
                num[j] = n;         
            } 
          } 
    } 
    
    for(int i = 0;i < n;i++){
        printf("%d ",num[i]);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容