zoukankan      html  css  js  c++  java
  • c语言选择排序

      简单选择排序是经常用到的一种排序算法.

      原理: 

     1.简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后。

     2.在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3,1,4}

    3.算法基本执行步骤1:找到初始的无序数组中最下的数,将其放在数组的头部。交换最小数和数组头部元素即可(这是与冒泡有区别的地方)。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 /*
     5  * 简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后。
     6  * 二、在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3,1,4}
     7  * 三、算法基本执行步骤1:找到初始的无序数组中最下的数,将其放在数组的头部。交换最小数和数组头部元素即可(这是与冒泡有区别的地方)。
     8  */
     9 
    10 //替换
    11 void swap(int a[],int i,int j){
    12     int temp = a[i];
    13     a[i] = a[j];
    14     a[j] = temp;
    15 }
    16 
    17 //快速排序
    18 void select_sort(int a[],int l)
    19 {
    20     // l = 6
    21     int i,temp,j,k;
    22     /*
    23      * 推导过程 2,5,6,3,1,4
    24      * i = 0 temp = 2 ,k =0 搜索到最小值1, k = 4 -> 1,5,6,3,2,4
    25      * i = 1 temp = 5 ,k =1搜索到最小值2, k = 4   ->   1,2,6,3,5,4
    26      * i = 2 temp = 6 ,k =2搜索到最小值3  k = 3 ->   1,2,3,6,5,4
    27      * i = 3 temp = 6 ,k =3搜索到最小值4  k = 5 ->   1,2,3,4,5,6
    28      * i = 4 temp = 5 ,k =4搜索不到   k = 4    k和i相同不做任何操作
    29      */
    30 
    31     //最后一次不用循环
    32     for (i=0;i<l-1;i++){
    33         //获取头元素的值
    34         temp = a[i];
    35         k = i;
    36 
    37         //printf("%d
    ",temp);
    38         //从第i+1 元素开始查找,如果找到比首元素小就替换
    39         for (j = i+1;j<l;j++){
    40 
    41             if (a[j] < temp){
    42                 //先记录下来最小值
    43                 temp = a[j];
    44                 k = j; //最小值的下标
    45             }
    46         }
    47 
    48         //替换
    49         if ( i != k )
    50             swap(a,i,k);
    51     }
    52 
    53 }
    54 
    55 void main()
    56 {
    57     int a[] = {2,5,6,3,1,4};
    58     int i,l = sizeof(a) / sizeof(int);
    59 
    60     //选择排序
    61     select_sort(a,l);
    62 
    63     printf("选择排序后:
    ");
    64     for ( i = 0; i < l; ++i) {
    65         printf("%d
    ",a[i]);
    66     }
    67 
    68 }
     
  • 相关阅读:
    前端之HTML
    面向对象编程思想
    【统计】Causal Inference
    Python 最常见的 170 道面试题全解析:2019 版
    面试mysql表设计要注意啥
    数据分析资料汇总
    【crunch bang】论坛tint2配置讨论贴
    【crunch bang】增加壁纸图片文件
    【linux】xx is not in the sudoers file 解决办法
    【crunch bang】安装firefox,删除iceweasel
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/6051782.html
Copyright © 2011-2022 走看看