首页 > 其他分享 >选择、冒泡、插入 排序

选择、冒泡、插入 排序

时间:2024-07-26 09:42:30浏览次数:10  
标签:minIndex arr int ++ 插入 length 冒泡 排序 public

package L04;

/**
 * 选择、冒泡、插入 排序
 *
 */
public class Select_bubble_insert_sort_04 {
    public static void main(String[] args) {
        int arr[]={2,4,5,3,1};
        insertionSort(arr);
    }

    /**
     * 插入排期
     * @param arr
     */
    public static void insertionSort(int[] arr){
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                // 当前位置和前一个位置比较
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j + 1, j);
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "-");
        }
    }


    /**
     * 冒泡排序
     * @param arr
     */
    public static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }

        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                // 每次发现比前面小的数据 交换位置
                if (arr[j] < arr[i]) {
                    swap(arr, j, i);
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "-");
        }
    }


    /**
     * 选择排序 0-n 之间选择最小的进行交换位置
     * @param arr
     */
    public static void selectionSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            // minIndex 标记最小位
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                // 和最小的对比,选择出最小的
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // 将最小的移到最前
            swap(arr, i, minIndex);
        }
        for(int i=0;i<arr.length ;i++){
            System.out.print(arr[i]+"-");
        }
    }


    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

  

标签:minIndex,arr,int,++,插入,length,冒泡,排序,public
From: https://www.cnblogs.com/Tonyzczc/p/18324663

相关文章

  • 按小计和计数对 Pandas 数据框进行排序
    我有一个非常大的数据集,名为bin_df。使用pandas和以下代码,我为每个组分配了小计“总计”:bin_df=df[df["category"].isin(model.BINARY_CATEGORY_VALUES)]bin_category_mime_type_count_df=(bin_df.groupby(["category","mime_type&quo......
  • 排序与 Retract 流的关系
    动态更新的聚合结果:当你在Flink中进行聚合操作(如 GROUPBY 和 ORDERBY)时,数据是动态变化的。新的数据到达时,可能会影响当前的聚合结果。为了保持聚合结果的准确性,Flink需要撤回旧的聚合结果并添加新的聚合结果。这就是Retract流的作用。窗口操作:在窗口操作中,数据会......
  • 一文彻底搞懂浏览器事件机制、事件委托、事件冒泡、事件循环、Event Loop、react事件
    一、事件是什么?事件模型?事件是用户操作网页时发生的交互动作,比如click/move,事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被封装成一个event对象,包含了该事件发生时的所有相关信息(event的属性)以及可以对事件进行的操作(event的方法)。事件是用......
  • 如何在 python 日志记录中插入换行符?
    importlogginglogging.basicConfig(level=logging.DEBUG,format='%(asctime)s%(levelname)s%(message)s',datefmt='%H:%M:%S')logging.info('hello')logging.warning('\nnewhello')11:15:01INFOhello11:16......
  • 点击内置变量,在文本框中插入,按下退回键或者删除键删除变量
    效果:代码:  //点击变量添加 consthandleTagClick=(param:any)=>{  constinput:any=inputRef.current.input;  if(input){   conststartPos=input.selectionStart;   constendPos=input.selectionEnd;   con......
  • es: 指定排序字段和顺序
    一,默认的排序字段_score_score在elasticsearch中代表文档与搜索查询的匹配程度。当执行一个搜索请求时,Elasticsearch会根据相关性得分_score来排序返回的结果如果想根据相关性得分_score来排序结果,可以在查询时指定 score,并将其设置为 asc 或 desc 来指示升序或降序排序......
  • MultiLabelBinarizer:inverse_transform 如何获得根据概率排序的标签列表?
    我正在做多标签分类,我使用MultiLabelBinarizer将标签列表转换为零和一。我可以使用inverse_transform获取标签,这是超级的。但是,如果我想根据类的概率对类进行排名,即概率越高,即使(仅)在其概率小于0.5的情况下,对标签的判断也越好。我怎样才能得到根据概率返回标签的排......
  • 将非常大的数据插入 PostgreSQL 表的更好方法
    将非常大的数据插入PostgreSQL表的更好方法是什么?操作系统:Ubuntu22.04LTS数据库:PostgreSQL14框架:Python3.11Django现在我使用insertinto语句一次100,000行。平均插入1,000,000行整个过程需要2分钟,在我可以接受的范围内。但我想知道是否有更好的方法......
  • 使用stream对集合进行排序
    根据Hash值排序的,无序排序的List<ModuleVo>moduleList=newArrayList();Map<Integer,List<ModuleVo>>collectResult=moduleList.stream().collect(Collectors.groupingBy(ModuleVo::getProjectId));根据time进行升序排序,如下TreeMap<Integer,List<ModuleVo>......
  • 《算法竞赛进阶指南》0x05排序
    在程序设计中通常会用到以下排序:1.选择排序、插入排序、冒泡排序2.堆排序、归并排序、快速排序3.计数排序、基数排序、桶排序前两类排序时基于比较的排序,第一类排序的时间复杂度为O(......