选择排序 - 数据结构和算法

硅谷探秘者 186 0 0
算法思想:

对冒泡排序的一种改进,每次从没有排序的集合a中拿取一个最大或最小的元素,放入有序的集合b中,直到a集合中的元素被取完

算法描述:

用变量i遍历整个数组,用变量j遍历i后面的数组,每次遍历i初始k=i,每次发现a[k]比a[j]大的元素,用k记录其下标,每次遍历完j,比较k和i是否相等,不相等则交换数据,直到i遍历完整个数组完成排序。

public class Test4{
  public static void main(String args[]){
    int a[]=new int[]{1,2,5,4,8,7,1,2,6,5,4,8,9};
    for(int i=0;i<a.length;i++){
      int k=i;
      for(int j=i+1;j<a.length;j++){
        if(a[k]>a[j]){
          k=j;
        }
      }
      if(i!=k){
        int t=a[i];
        a[i]=a[k];
        a[k]=t;
      }
    }
    for(int i=0;i<a.length;i++){
      System.out.print(a[i]+" ");
    }
  }
}
时间空间复杂度

平均时间复杂度:O(n^2)

平均空间复杂度:O(1)

猜你喜欢
数据结构与算法 3542 (英语:Heapsort)是指利用堆这种所设计的一种。堆是一个近似完全二叉树的,并同时满足堆积的性质:即子点的键值或索引总是小于(或者大于)它的父节点。以最小堆为例下沉操
数据结构与算法 120 思想:把所有需要分成两个集合,一个是待集合,一个是已的集合,每次从未集合顺或随机拿取一个,把它加入到已集合使其有,直到未集合中的被取走完,
数据结构与算法 155 ,若组只有一个元素则无需操作。每次递归束时,左右两个组都是有的,然后对这两个中的进行,使整个组有。直到束。publicclassTest8{ publicstaticint
数据结构与算法 275 原文链接:https://www.zhihu.com/question/23148377?sort=created基础 时间复杂度 空间复杂度基础 线性表 列表(必学) 链表(必学
数据结构与算法 178 思想将待集合以该集合中随机的一个为分界点分成左右两个集合,一次使其右边的集合的全部大于左边的集合,然后再分别递归式的对左右两个集合执行上述操作,直到递归集合没有,递归束完
数据结构与算法 130 思想:希尔是插入的增强版,其主要的思想还是插入的思想。描述:在插入的基础上,对待组进行间隔为inc的分组,然后对每个分组进行直接插入,一次完成后,减小inc
数据结构与算法 162 思想把所有需要分成两个集合,一个是待集合,一个是已的集合,每次从未集合顺或随机拿取一个,把它加入到已集合使其有,直到未集合中的被取走完,束案例
数据结构与算法 88 思想:每次从没有的集合a中拿取一个最大或最小的元素,放入有的集合b中,直到a集合中的元素被取完描述:用变量i遍历整个组,用变量j遍历i后面的组,每次交换i比j大的元素,使得i遍历过
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  4
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git undefined undefined sdf sdf dsdf sdfasdfasd sdf ppp sdf fggdgsd kkk kkk kkk sdddf 456
目录