zoukankan      html  css  js  c++  java
  • 数组排序之选择排序

      在刚开始学习数组时,不能很好的使用简单的排序算法,当进行深入学习了一段时间后,才分清楚,今天这里简单的分享一下使用选择排序的算法并进行相关实例。

    1. 什么是选择排序?

      从字面意思可以理解,就是有选择的进行排序,那么什么是有选择的呢?按照我的理解,就是按照某一种规则(例如从大到小或者从小到大)进行排序,就好像我们去看美女,肯定是先找气质最好的,依次往下,当然按照气质来进行选择的话,这是一个判断条件,是我们的一个标准;而我们所学习的选择排序也是这样。
    专业解释:
      选择排序是通过每一趟排序过程中从待排序记录中选择出关键字最小(大)的记录,将其依次放在数据表的最前或最后端的的方法来实现整个数据表的有序排列。

    思路:
      第一趟排序在所有的待排序的n个记录中选出关键字最小的记录,将它与数据表中的第一个记录进行交换位置,使关键字最小的记录处于数据表的最前端;
      第二趟在剩下的n-1个记录中再选出关键字最小的记录,将其与数据表中的第二个记录交换位置,使关键字次小的记录处于数据表的第二个位置;
      一直重复这样的操作,最终可实现数据表的升序排列。共进行n-1趟排序。

    思路图片浅析:

    1. 过程走向:

    2. 数据举例:


    2. 选择排序实现Demo


    1. //选择排序算法函数实现
      void select_sort(int*arr,int len)
      {
          int i =0;
          int j =0;
          int index =0;//记录最小记录的位置
          int min_value =0;//记录最小值
      
          for(i =0; i < len; i++)
          {
              min_value = arr[i];
              //获取最小值及其位置
              for(index = i, j = i +1; j < len; j++)
              {
                  if(min_value > arr[j])
                 {
                      min_value = arr[j];
                      index = j;
                  }
              }
              //交换第i个位置的数值与最小值的位置
              arr[index]= arr[i];
              arr[i]= min_value;
          }
      }                    

    其余的代码

    1. //打印输出函数
      void print_arr(int*arr,int len)
      {
          int i =0;
          for(i =0; i < len; i++)
              printf("%d	", arr[i]);
          printf("
      ");
      }
      int main(void)
      {
          int arr[]={12,1,34,3,56,67,23,45,13};
          //获取数组长度len
          int len =sizeof(arr)/sizeof(arr[0]);
      
          printf("init
      ");
          print_arr(arr, len);
          //调用排序函数
          select_sort(arr, len);
      
          printf("sort later
      ");
          print_arr(arr, len);
          return0;
      }        

    运行结果:

  • 相关阅读:
    sql获取当天零点
    byte[]和InputStream的相互转换
    ResultSet获取记录条数
    Java:String和Date、Timestamp之间的转换
    查询表中blob字段的大小
    Oracle中start with...connect by子句的用法
    oracle创建序列,并插入记录
    关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的jar包支持
    css来控制img正方形自适应
    上下固定中间自适应
  • 原文地址:https://www.cnblogs.com/Bob-tong/p/6621522.html
Copyright © 2011-2022 走看看