java实现选择排序完整代码-创新互联

  • 选择排序
  • 原理:从无序区间中找到大(最小)的元素,将其放于无序区间的后面(前面),直到所有无序区间内的元素排完后,排序结束
  • 插入排序是一个不稳定的排序
实现方式
  1. 单向选择排序
    • 遍历无序区间选择出大的值,放在无序列表的后面
    • 代码:
      public void selectSort(int[] array) {
           for(int i = 0; i < array.length - 1; i++) {
               //无序区间是[0, array.length - i)
               //有序区间是[array.length - i, array.length)
               int max = 0;
               for(int j = 0; j < array.length - i; j++) {
                   if(array[j] > array[max]) {
                       max = j;
                   }
               }
               int tmp = array[max];
               array[max] = array[array.length - 1 - i];
               array[array.length - 1 - i] = tmp;
           }
      }
  2. 双向选择排序

    成都创新互联专注于中大型企业的网站建设、做网站和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户1000多家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!
    • 遍历无序区间,找出无序区间中的大值和最小值,将最小值放在无序区间的前面,将大值放在无序区间的后面,直到将无序区间的元素都排完
    • 代码:

      public void selectSortOP(int[] array) {
           int left = 0;
           int right = array.length - 1;
      
           while(left <= right) {
               int min = left;
               int max = left;
               //遍历无序区间,找到大值和最小值的下标
               for(int i = left + 1; i <= right; i++) {
                   if(array[i] > array[max]) {
                       max = i;
                   }
                   if(array[i] < array[min]) {
                       min = i;
                   }
               }
               swap(array, min, left);
               //判断大的值是否在最左侧,如果是在最左侧的话由于最小的元素已经和他进行了交换,此时大值的下标就
               //不再是left,而是交换后的min
               if (max == left) {
                   max = min;
               }
               swap(array, max, right);
               left++;
               right--;
           }
      }
      
      private void swap(int[] array, int i, int j) {
           int tmp = array[i];
           array[i] = array[j];
           array[j] = tmp;
      }
性能分析
  • 时间复杂度:O(N^2)
  • 空间复杂度:O(1)
  • 稳定性:不稳定

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前题目:java实现选择排序完整代码-创新互联
文章位置:http://scyanting.com/article/djhjji.html