zoukankan      html  css  js  c++  java
  • 01_排序_选择排序

    【基本原理】

    对于给定的一组数据,经过第一轮比较后得到最小的数据,然后将该数据与第一个数据的位置进行交换;

    然后对不包括第一个数据以外的其它数据进行第二轮比较,得到最小的数据并与第二个数据进行位置交换;

    重复该过程,直到进行比较的数据只有一个时为止。

    【举例】

    待排序数组

    【38,65,97,76,13,27,49】

    排序过程

    第一趟:【13,65,97,76,38,27,49】

    第二趟:【13,27,97,76,38,65,49】

    第三趟:【13,27,38,76,97,65,49】

    第四趟:【13,27,38,49,97,65,76】

    第五趟:【13,27,38,49,65,97,76】

    第六趟:【13,27,38,49,65,76,97】

    最后结果:【13,27,38,49,65,76,97

    【代码实现】

    package com.sort;
    
    public class TestSelectSort {
        public static int[] selectSort(int[] a){
            
            int length=a.length; //先得到数组的长度
            int i,j,n,tmp,flag;
            for(i=0;i<length;i++){
                tmp=a[i];  //tmp为每次循环的第一个位置
                flag=i;
                for(j=i+1;j<length;j++){
                    if(tmp>a[j]){
                        tmp=a[j]; //这一步不要忘记了,因为tmp不一定是最小的,必须用用循环过的最小的和当前的数据比较
                        flag=j;   //如果发现比tmp小的数据,将flag标记为当前位置,循环结束,flag标志的是最小数字的下标
                    }
                }
                if(flag!=i){    //如果flag已经不再是刚开始第一个位置的i,那么将两者的数据调换位置
                    n=a[i];
                    a[i]=a[flag];
                    a[flag]=n;
                }
            }
            return a;
        }
        public static void main(String[] args){
            int a[]={2,9,0,8,7,1,5,4,3,6};
            a=selectSort(a);
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
        }
    }
  • 相关阅读:
    JVM 垃圾回收器工作原理及使用实例介绍(转载自IBM),直接复制粘贴,需要原文戳链接
    装tomcat和nginx心得
    jms的俩种模式
    裸奔Spring(1)
    一个最小mybatis
    SpringBoot和数据库连接
    SpringBoot的基础Pom
    SpringBoot读取配置文件
    埃拉托斯特尼素数筛法
    hdu 1175 连连看
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5702039.html
Copyright © 2011-2022 走看看