数组 冒泡排序 选择排序 插入排序

c语言数组选择排序例题,C语言数组排序——冒泡排序、选择排序、插入排序 一、冒泡排序原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置。然后比较第二、第三个……直到比较第n-1个和第n个,此时,每一次比较都将较大的一个数往后移动,所以第n个数是所有数中最大的一个。之后再重复以上过程,直到将所有数据按从小到大顺序排列好。编程实现:通过两个嵌套的循环实现。外层循环执行一次,内层循环执行一遍。其中,内层循环控制比... 阅读详情
package arr;

/**
 * 我自己的数组类
 * @author guosheng
 *
 */
public class ArraySelf {

    public long[] guosheng;
    
    public int elements;
    
    public ArraySelf(){
        guosheng = new long[100001];
    }
    
    public ArraySelf(int chang){
        guosheng = new long[chang];
    }
    
    /**
     * 添加方法
     * 郭胜
     */
    public void insert(long value){
        guosheng[elements] = value;
        elements++;
    }
    
    /**
     * 降序插入
     */
    public void insertBySortAsc(long value){
        int i;
        for (i = 0; i < elements; i++) {
            if(guosheng[i]>value){
                break;
            }
        }
        for(int j = elements;j>=i;j--){
            guosheng[j+1] = guosheng[j];
        }
        guosheng[i] = value;
        elements ++;
    }
    
    /**
     * 修改方法
     * 根据下标修改
     */
    public void change(int index,long value){
        if(index > elements || index < 0){
            throw new IndexOutOfBoundsException();
        }else{
            guosheng[index] = value;
        }
    }
    
    /**
     * 根据下标查询方法
     */
    public long searchByIndex(int index){
        if(index > elements || index < 0){
            throw new IndexOutOfBoundsException();
        }else{
            return guosheng[index];
        }
    }
    
    /**
     * 根据值线性查询方法
     */
    public int searchByValue(long value){
        long startTime = System.currentTimeMillis();
        int i;
        for(i=0;i<elements;i++){
            if(guosheng[i] == value){
                break;
            }
        }
        if(i>= elements){
            return -1;
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime+"直线执行查询方法");
        return i;
    }
    
    /**
     * 根据值二分法查询
     */
    public int searchByValueForTwo(long value){
        long startTime = System.currentTimeMillis();
        int min = 0;
        int max = elements;
        int middle = (max+min)/2;
        for(int i=0;i<elements/2;i++){
            if(guosheng[middle] == value){
                break;
            }else if(i>=(elements/2-1)){
                middle = -1;
                break;
            }else if(guosheng[middle]>value){//向左
                max = middle;
                middle = (max+min)/2;
            }else if(guosheng[middle]<value){//向右
                min = middle;
                middle = (max + min)/2;
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime+"二分法执行时间");
        return middle;
    }
    
    /**
     * 展示我的数组
     */
    public void displayMyArray(){
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < elements; i++) {
            sb.append(guosheng[i] + ",");
        }
        String str = sb.toString();
        str = str.substring(0, str.length()-1)+"]";
        System.out.println(str);
    }
    
    /**
     * 冒泡排序
     * 郭胜
     * @param arr
     * @return
     */
    public long[] bubblingSort(long[] arr){
        long temp = 0;
        for(int i=0;i<arr.length-1;i++){
            for(int j=arr.length-1;j>i;j--){
                if(arr[j]<arr[j-1]){
                    temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        
        return arr;
    }
    
    /**
     * 选择排序
     * 郭胜
     * @param arr
     * @return
     */
    public long[] selectionSort(long[] arr){
        
        int k = 0;
        long temp = 0;
        for(int i=0;i<arr.length-1;i++){
            k=i;
            for(int j=0;j<arr.length-1;j++){
                if(arr[k]<arr[j]){
                    temp = arr[k];
                    arr[k] = arr[j];
                    arr[j] = temp;
                }
            }
            
        }
        return arr;
    }
    
    /**
     * 插入排序
     * 郭胜
     * @param arr
     * @return
     */
    public long[] insertionSort(long[] arr){
        for(int i=1;i<arr.length-1;i++){
            if(arr[i]< arr[i-1]){
                long temp = arr[i];
                int j = i;
                while(j>0 && arr[j-1]>temp){
                    arr[j] = arr[j-1];
                    j--;
                }
                arr[j] = temp;
            }
            
        }
        return arr;
    }
    
}

IAR9.4报错之编码方式 IAR9.40编码方式错误导致的报错 阅读详情

相关推荐

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 514

选择排序(Selection Sort)

2.选择排序(Selection Sort):表现最稳定的排序算法之一(这个稳定不是指算法层面上的稳定哈,相信聪明的你能明白我说的意思2333),因为无论什么数据进去都是O(n²)的时间复杂度.....所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。(1)算法简介:选择排序(Selection-sor...

今天比昨天进步一点点 2873

手把手教你用海康威视相机+DLP4500搭建双目结构光系统(附避坑指南)

本文详细介绍了如何使用海康威视相机和DLP4500搭建双目结构光三维测量系统,涵盖硬件选型、系统搭建、双目标定及三维重建等关键步骤。特别针对预算有限的开发者和实验室团队,提供实用的避坑指南和优化技巧,帮助实现0.02mm的高精度测量。

weixin_42526087的博客 462

三种简单排序的实现(冒泡排序,选择排序,插入排序 )

冒泡排序: public static void main(String[] args) { int[] a = {1, 7, 4, 3, 8, 2, 9, 6, 5}; for(int j = a.length; j > 0; j--) { //第一遍先找出最大的数,从第一个开始找,两两对比,大的数移到右边 //第

chenkai904的博客 996

ArcGIS实战:地形湿度指数(TWI)计算全流程解析

本文详细解析了ArcGIS中地形湿度指数(TWI)的计算全流程,从DEM数据获取、填洼处理到水流方向与汇流累积量计算,最终实现TWI的精准计算。通过实战步骤指导,帮助读者掌握水文建模和土壤湿度预测的关键技术,适用于农业规划、生态研究等领域。

weixin_29231725的博客 869

全桥LLC谐振变换器变频控制工作原理与仿真

全桥LLC谐振变换器以其效率高、全范围软开关、器件电应力小等优点,越来越多地应用于大功率场合。电力电子技术的发展日益追求高频化,所带来的问题是半导体开关器件高频运行时的开关损耗急剧增加。各种软开关电路随之出现。可以有效减小开关损耗,使进一步提高开关频率成为可能。谐振式开关因其可在电流自然过零点开通半导体器件,实现零电压开关,特别适合采用MOSFET作开关的装置。最简单的谐振电路有串联谐振(SRC)和并联谐振(PRC)。SRC只能工作于降压状态,应用受限;

晞子的技术札记 3075

关于数组的排序问题(冒泡排序,选择排序,插入排序)

方法一:冒泡排序法 代码: public int[] bubbleSort(int[] a){ //冒泡排序算法 //每趟不断将相邻记录两两比较,并按“前小后大”(或“前大后小”)规则交换。 int len = a.length; for(int i = len-1;i>=1;i--){ for(int j = 0;j<=i

为了、梦想 的博客 6967

上位机 寻边器 通讯实战

寻边器通讯接口实现 本文介绍了上位机与盖泽(Gazer)和JEL品牌寻边器的通讯接口实现方案。主要内容包括: 接口定义:创建了IAlignerOperation接口,定义了获取状态、控制运动、真空吸附等核心功能。 具体实现: 盖泽寻边器(GazerAlignerCjh):通过串口通讯,实现了回零、校准、移动位置等操作 JEL寻边器(JelAligner):同样基于串口通讯,包含错误处理、状态查询等功能 工厂模式:通过AlignerFactory工厂类根据设备品牌创建对应的实现对象。 设备加载:展示了如何在系

StevenChen的博客 377

Java数组快速排序,冒泡排序,选择排序,插入排序代码实现

Java数组快速排序,插入排序,冒泡排序,选择排序代码实现 快速排序:递归拆分 插入排序:从左往右一个一个插入左边已排好的数组中 冒泡排序:选定一个节点循环相邻的比较,每次循环排出一个最大的值 选择排序:只要发现小的就交换到前面 public class ArraySort { public static void main(String args[]) { int[] a = { 2, ...

KeepOnJiJi的博客 644

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

会话管理技巧——如何优化OpenClaw的上下文理解能力(2026进阶版)

本文深入探讨了OpenClaw系统的会话管理技术,重点介绍了会话定义、生命周期管理和上下文优化策略。会话管理包含会话ID、用户信息、状态等核心要素,以及创建、维护、终止和恢复四个生命周期阶段。上下文管理通过ContextManager类实现,支持创建、更新、消息添加和变量管理等功能,并采用历史记录机制确保会话连续性。ContextOptimizer类则负责应用优化规则,通过消息和变量压缩等技术提升系统性能。这些技术共同构建了OpenClaw强大的会话管理能力,为AI助手提供了高质量的交互体验基础。

博客 491

Java基础——数组选择排序、冒泡排序、插入排序

文章目录1、选择排序2、冒泡排序3、插入排序 1、选择排序 排序:需要两个数比较,直至最后一位数时,已经没有多余的数进行比较了,所以比较的轮数-1; 开始比较的是下标arr[0]跟下标arr[1]开始比较; /** * 选择排序 */ int[] arr = { 1, 7, 8, 9, 2, 3, 4, 5, 6 }; System.out.println("排序前:" ...

橘子皮的博客 359

电气设备Simlink仿真(Matlab)

目录 1、电气设备的分类及原理 2、直流输电控制与保护的仿真 (1)本次实验直流输电控制与保护的主电路: (2)直流输电的控制 2、资源下载(百度网盘) 1、电气设备的分类及原理 电气设备大体上可以分为一次设备、二次设备,本次仿真实验主要讲解的是高压直流输电的控制与保护仿真。高压直流输电的原理是整流和有源逆变的应用。下图是一个简单的单极直流输电系统,属于晶闸管的整流电路,交流通过晶闸管的整流变成直流,变成直流后通过长距离输电送往远端,送到远端的直流经过晶闸管的有源逆变变成交流,...

weixin_46039719的博客 1418

前端数组排序冒泡排序;选择排序;插入排序

冒泡排序:重复访问数列,一次比较相邻两个元素,如果前一个元素比后一个元素大,那么交换他们的顺序,多次交换之后得出正确排序。 假设有这样一个数组[7, 3, 6, 1, 9, 2, 5, 4, 0, 8],使用冒泡排序进行排序,每次循环从最后一个元素开始,相邻的两个元素进行比较,如果前一个元素大于后一个元素,则两者互换 第一次排序的结果为[7, 3, 6, 1, 9, 2, 5, 4, 0, ...

Sunny_lxm的博客 555

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java-数组,冒泡排序,选择排序,插入排序

eg:注意:-->错误--->错误---> 数组有默认的初始化值。

weixin_62951914的博客 614

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java数组排序:比大小+冒泡排序+选择排序+插入排序

Java日报 部门:**大数据开发六部 姓名:cqmfx(阡陌飞絮) 日期:2020.10.25 备注:部分转自百度,优快云,菜鸟,侵权删 大纲 一、数组介绍 二、排序 数组那些事

cqmfx的博客——Java那些事 1279

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

4、一维数组、遍历数组、冒泡排序、插入排序、选择排序

一维数组: 定义形式1:数据类型[ ] 数组变量名=new 数据类型[数组长度] 例1:int[ ] array=new int[10]; 例2:char[ ] array=new char[8]; 定义形式2:数据类型[ ] 数组变量名={值1,值2,值3,…,值n} 例1:int [ ] array={2,4,1,4,…,12,8,n}; 例2:String[ ] names={“小花”,...

qq_44357792的博客 425

数组的简单排序(冒泡排序,简单选择排序,插入排序)

数组作为应用最为广泛的一种数据结构,对数组实现简单排序的思想是每一个开发者的基本功。虽然实际的业务开发中用的很少,但是作为开发者,我们更看重的是其中所体现的一种思想。 现设定一个数组 num int[] num = new int[] { 1, 2, 3, 5, 4, 7, 1, 9, 2, 4, 5, 8, 9, 12, 45, 34, 56, 78, 233, 123, 987 };我们定

小青 993

java数组的排序,选择排序,冒泡排序,插入排序

/*数组的排序:让数组的所有元素按照一种固定的顺序进行排列 1.选择排序:     外层循环,每次将相应的最大数放在对应的位置,位置i从0~length-2     内层循环,假设i位置的元素为最大数max,用一个pos先记住i,遍历从i+1的位置开始到末尾所有的元素     如果有比max大的就让max记住该数,pos记住该数的位置,这样循环下来,pos一定是记住i~length-1中

u011325464的专栏 612

一维数组的选择排序,冒泡排序,以及插入排序。

1. 一维数组快速排序之选择排序 选择排序原理:拿数组的第一个元素和其他元素相比较,如果这个元素大于其他元素,那么交换他们的位置(每一轮把最小值放到了前面) 例:public static void P1(){ int[] ary = {4,6,9,2,3,7,1,8,5}; //一维数组  for(int i = 0; i  for (int j = i+1;

似风若即若离的博客 758

数组的几种排序方法:冒泡排序,选择排序,插入排序,快速排序

数组的几种排序方法:冒泡排序,选择排序,插入排序,快速排序 数组排序: ​ 把数组中的无序的元素,通过交换移动等方式,使数组中的元素,成为一个有序序列。 冒泡排序 冒泡排序的原理图解 冒泡排序: 数组中的元素两两比较,大的元素往后放,经过一轮比较后,最大的元素会出现在最后面。 案例: public class Demo { public static void main(String[] args) { int[] arr = {9, 8, 7, 6, 5, 4, 3, 2

qq_39153706的博客 531

数组(冒泡排序,选择排序,插入排序)

数组 import java.util.Arrays;//导入数组包     冒泡排序 public class Xh {       publicstatic void main(String[] args)       {            //创建数组            int[]arr={5,2,8,2,11,9};            //外for循环变量i确

Albaficahan的博客 449

对于给定的一个数组,int[] a = {6,3,1,4,7,9,8,10,45,32,15} ,并以升序或者降序排序。 (不能用Arrays类)(内含选择排序、插入排序、冒泡排序)

如果用Arrays类,可直接调用 Arrays类的 public static void sort (int[] a) 方法,来对数组进行排序。 若不用Arrays类,在此运用选择排序、插入排序、冒泡排序三种排序方法来对数组进行排序。 先定义一个数组a[ ]: int[] a = { 6, 3, 1, 4, 7, 9, 8, 10, 45, 32, 15 }; 选择排序: //...

qq_36653524的博客 9104

冒泡排序,选择排序,插入排序(用数组实现)

#include <stdio.h> /* * 实参传指针型形参时, 传入实参的地址, * 对指针形参所指的实参地址中的内容进行修改, * 指针形参虽释放,但实参地址中的值改变。 */ /* **temp指针变量是未知存储单元不可赋值 *C语言中实参变量单向传递给形参变量 *形参值的改变不能使实参的值随之改变。 */ void swap(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b =.

weixin_59368075的博客 1546

数组的动态扩容、选择排序、冒泡排序、插入排序、计数排序的解析

1.数组的动态扩容 1.1 图解 1.2 代码解释 import java.util.*; class D1{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); //数组的动态扩容 //建立一个数组长度为零的数组 ...

qq_45767166的博客 185

一维数组常见的三种排序、冒泡排序、选择排序、插入排序、Arrays内置排序

一维数组的 冒泡排序 选择排序 插入排序 Arrays内置排序 * 一维数组的排序 * 冒泡排序 * 选择排序 * 插入排序 * Arrays类内置方法排序

sunrainamazing的博客 3926
上一篇: 设计模式:工厂方法模式
下一篇: 设计模式:单例模式
郭胜_自强
博客等级 码龄11年 9粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值