首页 > 编程语言 >java----冒泡,选择,插入排序

java----冒泡,选择,插入排序

时间:2022-10-09 12:55:06浏览次数:54  
标签:minIndex java temp int 插入排序 ---- ++ leftIndex array

1.冒泡排序

package learnday06排序;
//动态录入往数组里录入n个数字,并用冒泡排序
import java.util.Arrays;
import java.util.Scanner;
public class Maopaopaixu {
  public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.println("请输入n个整数");
      int num = input.nextInt();
      int[] array1 = new int[num];
      System.out.println("n的值为:"+num);
      for (int i = 0; i < array1.length; i++) {
          System.out.println("请输入第" + (1 + i) + "个数字");
          int number = input.nextInt();
          array1[i] = number;
      }
      int[] array2 = maoPao(array1);
      System.out.println(Arrays.toString(array2));
      input.close();
  }
  public static int[] maoPao(int[] array) {
      int c = 0;
      for (int i = 0; i < array.length - 1; i++) {
          boolean falg = false;//通过falg标识减少没有意义的比较
          for (int j = 0; j < array.length - 1 - i; j++) {
              if (array[j] > array[j + 1]) {
                  c = array[j];
                  array[j] = array[j + 1];
                  array[j + 1] = c;
                  falg = true;
              }
          }
          if (falg = false) {
              break;
          }
      }
      return array;
  }
}

2.选择排序

package learnday06排序;
import java.util.Arrays;
/*选择排序:是对冒泡排序的改进,它的比较次数与冒泡相同
但交换的次数小于冒泡,数据量较大时,效率会有很大提升
原理:从第一个元素开始往后找最小的元素然后交换位置,同理第二个
第三个直到排完序
*/
public class XuanzePaixu {
  public static void main(String[] args) {
      int[] array = {1, 11, 22, 34, 6, 8};
      for (int i = 0; i < array.length - 1; i++) {
          int minIndex = i;
          for (int j = i + 1; j < array.length; j++) {
              if (array[minIndex] > array[j]) {
                  minIndex = j;//索引
              }
          }
          if (i != minIndex) {//加个判断自己不和自己交换,加快效率
              int temp = array[i];
              array[i] = array[minIndex];
              array[minIndex] = temp;
          }
      }
      System.out.println(Arrays.toString(array));
  }
}
/*
---------------------选择排序------------
int[] array = {1,11,22,34,6,8};
for (int i = 0; i < array.length - 1; i++) {
          int minIndex = i;
          for (int j = i + 1; j < array.length; j++) {
              if (array[minIndex] > array[j]) {
                  minIndex = j;
              }
          }
          if (i != minIndex) {
              int temp = array[i];
              array[i] = array[minIndex];
              array[minIndex] = temp;
          }
      }
      System.out.println(Arrays.toString(array));
*/
/*
--------------冒泡排序-----------------------
int[] array = {1,11,22,34,6,8};
for (int i = 0; i < array.length - 1; i++) {
          boolean falg = false;
          for (int j = 0; j < array.length - i - 1; j++) {
              if (array[j] > array[j + 1]) {
                  int temp = array[j + 1];
                  array[j + 1] = array[j];
                  array[j] = temp;
                  falg = true;
              }
          }
          if (falg = false) {
              break;
          }
      }
System.out.println(Arrays.toString(array));
*/
/*
------------------插入排序-------------
int[] array = {1, 11, 22, 34, 6, 8};
      for (int i = 0; i < array.length; i++) {
          int temp = array[i];
          int leftIndex = i - 1;
          while (leftIndex >= 0 && array[leftIndex] > temp) {
              array[leftIndex + 1] = array[leftIndex];
              leftIndex--;
          }
          if (i != (leftIndex + 1)) {
              array[leftIndex + 1] = temp;
          }
      }
      System.out.println(Arrays.toString(array));
*/

3.插入排序

package learnday06排序;
import java.util.Arrays;
/*
插入排序:原理将指针指向某个(一般是第二个开始)元素,假设该元素左侧全部有序
,将该元素抽取出来,按照从右往左的顺序依次比较,遇到比他大的,将大的元素右移
直到找到比他小的元素或找到最左边发现其左侧的元素都比他大停止,此时会出现一个空位
将他放入这个空位,此时他的左侧元素都比他小,右侧都比他大,然后指针往后移动一位,
重复上述过程,没操作一次,左侧有序元素增加一个,右侧无序元素减少一个
*/
public class CharuPaixu {
  public static void main(String[] args) {
      int[] array = {1, 11, 22, 34, 6, 8};
      for (int i = 0; i < array.length; i++) {
          int temp = array[i];
          int leftIndex = i - 1;
          while (leftIndex >= 0 && array[leftIndex] > temp) {
              array[leftIndex + 1] = array[leftIndex];
              leftIndex--;
          }
          if (i != (leftIndex + 1)) {
              array[leftIndex + 1] = temp;
          }
      }
      System.out.println(Arrays.toString(array));
  }
}

package learnday06排序;
import java.util.Arrays;
public class Test {
  public static void main(String[] args) {
      int[] array = {22, 12, 3, 6, 1, 46};
//----------------冒泡排序------------------------
      for (int i = 0; i < array.length - 1; i++) {
          boolean falg = false;
          for (int j = 0; j < array.length - i - 1; j++) {
              if (array[j] > array[j + 1]) {
                  int temp = array[j + 1];
                  array[j + 1] = array[j];
                  array[j] = temp;
                  falg = true;
              }
          }
          if (falg = false) {
              break;
          }
      }
//----------------选择排序----------------------
//       for (int i = 0; i < array.length - 1; i++) {
//           int minIndex = i;
//           for (int j = i + 1; j < array.length; j++) {
//               if (array[minIndex] > array[j]) {
//                   minIndex = j;
//               }
//           }
//           if (i != minIndex) {
//               int temp = array[i];
//               array[i] = array[minIndex];
//               array[minIndex] = temp;
//           }
//       }
//---------------------插入排序---------------
//       for (int i = 1; i < array.length; i++) {
//           int temp = array[i];
//           int leftIndex = i - 1;
//           while (leftIndex >= 0 && array[leftIndex] > temp) {
//               array[leftIndex + 1] = array[leftIndex];
//               leftIndex--;
//           }
//           if (i != leftIndex) {
//               array[leftIndex + 1] = temp;
//           }
//
//       }
      System.out.println(Arrays.toString(array));
  }
}
 

标签:minIndex,java,temp,int,插入排序,----,++,leftIndex,array
From: https://www.cnblogs.com/wang1999an/p/16771757.html

相关文章

  • 从零开始配置vim(25)——关于 c++ python 的配置
    从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿。一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。在这里向支......
  • scrapy爬取校花网信息
    校花网的信息资源都可以在我们打印出来的响应对象中找到,所以说,校花网的加载方式是属于静态加载的,所以,我们就可以直接在scrapy框架中的爬虫文件档中将我们所需要的信息全部......
  • kubernetes Tcp流量可视化
    kubernetesTcp流量可视化使用k8spacket和grafana的nodegraph插件可以查看kubernetespod的TCP相关信息,如connection、bytes、和duration。下面是接收和响应的字节数信息......
  • java 生成GUID,可以用UUID类来生成GUID
    全局唯一标识符(GUID,GloballyUniqueIdentifier)是一种由算法生成的二进制长度为128位的数字标识符,一般用16进制表示。在理想情况下,任何计算机和计算机集群都不会生成......
  • 状压dp刷题记录【持续更新】
    前言:许多算法的状态数并不支持其在多项式时间内运行完成。比如TSP问题这种大部分为NP-Hard的问题。在数据范围缩小的前提下(例如\(n\leq21\)),不妨将状态数压缩成二进制情......
  • fibnacci数列递归实现
    fibnacci数列递归实现1.什么是斐波那契(fibnacci)数列?斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第3项开始,每一项都等于前两项之和。2.递归表达式F(......
  • 2022年10月9日有感
      感恩上天赐予我健康的身体,稳定顺利的工作,富足美好的生活,感恩我拥有的一切!  我是宇宙的孩子! 我拥抱宇宙的富足! 我值得宇宙的富足! 财富是一场英雄之旅! ......
  • 虫逢——随机化数据的随机化处理
    【清华集训2014】虫逢一道随机化数据的好题。题干小强和阿米巴是好朋友。阿米巴告诉小强,变形虫(又叫阿米巴虫)和绝大多数生物一样,也是有DNA的。并且,变形虫可以通过分......
  • 主机字节序和网络字节序的转换
    网络字节序:是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能被正确解释。网络字节序采用大端字节排序方式。......
  • 常用virsh命令
    常用虚拟机操作virsh命令ssh到计算节点执行,以下命令中的vm-name表示虚拟机的名称;查看virsh的版本:virsh -version查看virsh的帮助命令:virsh --help查看主机下的所......