首页 > 编程语言 >排序算法——冒泡,插入,选择排序

排序算法——冒泡,插入,选择排序

时间:2023-10-30 22:13:39浏览次数:29  
标签:arr minVal int 元素 len 算法 冒泡 排序

冒泡排序

冒泡排序是一种简单的排序算法
实际上是每一次排序都会将最大的元素放到最后
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数
针对所有的元素重复以上的步骤

点击查看代码
     int len = arr.length;
        for (int i = 0; i < len - 1; i++) {
            boolean flag = true;
            for (int j = 0; j < len - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                    flag = false;
                }
            }
            if (flag) {
                break;
            }
        }

** 选择排序**

首先在末排序序列中找到最小元素,存放到排序序列的起始位置
再从剩余没有排序的元素再找到最小的元素,然后放到已排序序列的末尾
然后重复剩余元素

点击查看代码

        int len = arr.length;
        for (int i = 0; i < len - 1; i++) {
            int minVal = i;
            for (int j = i + 1; j < len; j++) {
                if (arr[minVal] > arr[j]) {
                    minVal = j;
                }
            }
            if (minVal != i) {
                int tmp = arr[i];
                arr[i] = arr[minVal];
                arr[minVal] = tmp;
            }
        }

插入排序

首先从第一个元素开始,该元素被认为是有序的
取出第一个元素,在已经排序的元素序列中从后往前进行扫描
如果该已经排好序的元素大于新元素,则将该元素移到下一位置
重复步骤,一直到找到已排序的元素小于或者等于新元素的位置

点击查看代码
 for (int i = 1; i < arr.length; i++) {
            int val = arr[i];
            int j = i;
            while (j > 0 && val < arr[j - 1]) {
                arr[j] = arr[j - 1];
                j--;
            }
            arr[j] = val;

            
        }

标签:arr,minVal,int,元素,len,算法,冒泡,排序
From: https://www.cnblogs.com/yifan0820/p/17798979.html

相关文章

  • 快速排序学习
    //#include<bits/stdc++.h>#include<iostream>usingnamespacestd;voidquick_sort(intq[],intl,intr){if(l>=r)return;intx=q[(l+r)/2];inti=l-1,j=r+1;while(i<j){doi++;while(q[i]<x);doj--;while(q[j]>......
  • 文心一言 VS 讯飞星火 VS chatgpt (124)-- 算法导论10.5 5题
    五、用go语言,给定一个n结点的二叉树,写出一个O(n)时间的非递归过程,将该树每个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改也不允许。文心一言:您可以使用一个栈来存储节点,以便在遍历二叉树时进行回溯。由......
  • 排序(按照第一元素)
    按照元素的第一顺序排序//maybe贪心会用到structty{ intx,y;}a[N];boolcmp(tya,tyb){ if(a.x<b.x)returntrue; returnfalse;}intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) { cin>>a[i].x>>a[i].y; } sort(a+......
  • 快速排序--排序算法
    快速排序介绍快速排序是分治思想的一种体现,通过递归不断将原数列划分为一大一小两部分,从而实现对数列的排序。算法时间复杂度为O(nlogn)。特点是数据越混乱,效率越高;数据越有序,效率越低。值得注意的是快速排序是不稳定的,即相同大小的数据在排序前后的相对位置可能会发生变动。......
  • 文心一言 VS 讯飞星火 VS chatgpt (122)-- 算法导论10.4 3题
    三、用go语言,给定一个n结点的二叉树,写出一个O(n)时间的非递归过程,将该树每个结点的关键字输出。可以使用一个栈作为辅助数据结构。文心一言:以下是一个使用Go语言编写的函数,该函数使用一个栈作为辅助数据结构,以非递归方式遍历二叉树,输出每个结点的关键字。这个算法的时间复杂度为......
  • Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
    cxGrid,数据库中存在:GongSiNo,GongSiMc;cxGrid中显示列GongSiMc,Properties指定的是ComBoBox,GongSiMc变化时更新GongSiNo的值并存入数据库。在Properties的OnChange事件中写代码:{GSNo,GSMc:string;}GSMc:=cxgrdCZYDBTableView1.Controller.EditingController.Edit.EditingValue;......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影、发表......
  • 数据结构与算法 | 二分搜索(Binary Search)
    二分搜索(BinarySearch)文承上篇,搜索算法中除了深度优先搜索(DFS)和广度优先搜索(BFS),二分搜索(BinarySearch)也是最基础搜索算法之一。二分搜索也被称为折半搜索(Half-intervalSearch)也有说法为对数搜索算法(LogarithmicSearch),用于在已排序的数据集中查找特定元素。搜索过程从排序数......
  • C++U4-02-贪心算法2
    上节课作业部分  [纪念品分组]  【算法分析】贪心算法:先对数组从小到大排序,用l=1,r=n指针指向首尾元素;如果pl+pr≤w,则将pl和pr分一组,指针l++,r--。如果pl+pr>w,则将pr单独作为一组,指针r--。如此反复直到取完所有元素。#include<iostream>#include<a......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影......