数据结构-简单排序

前言

一旦建立了一个重要的数据库后,可能根据某些需求对数据进行不同方式的排序。

对数据进行排序有可能是检索的一个初始步骤。

由于排序非常重要而且可能非常耗时,所以它已经成为一个计算机科学中广泛研究的课题。

冒泡排序、选择排序、插入排序、希尔排序、快速排序

计算机程序不能像人一样一眼就看出数据的大小,它只能根据计算机的"比较"操作原理,在同一时间内对两个数进行比较。

  1. 比较两个数据项
  2. 交换两个数据项,或复制其中一项

冒泡算法

将最小的数据项放在数组的最开始,并将最大的数据项放在数组的最后。

双循环,外层循环--len--;内循环,遍历len元素,并两两交换swap(n,n+1),保证大的数据项都放在右边。

不变性

在许多算法中,有些条件在算法执行时是不变的,这些条件被称为不变性。 在冒泡算法中,不变性就是外层循环右边的所有数据项是有序的

效率

假设:共有10个数据项,遍历的次数: 9+8+7+6+5+4+3+2+1 = 45次

约等于n的平方除以2

O(N平方)

java 复制代码
public static void main(String[] args) {

    int[] af = new int[10];
    af[0] = 32;
    af[1] = 17;
    af[2] = 1;
    af[3] = 22;
    af[4] = 32;
    af[5] = 68;
    af[6] = 46;
    af[7] = 99;
    af[8] = 77;
    af[9] = 70;
    System.out.println("排序前:");
    Arrays.stream(af).forEach(e->{
        System.out.print(e);
        System.out.print(" ");
    });

    int len = af.length;

    for (int out = len -1;out>1;out--){
        for (int in = 0;in < out;in ++){
            if (af[in] > af[in+1]){
                swap(af,in,in+1);
            }
        }
    }
    System.out.println("排序后:");
    Arrays.stream(af).forEach(e->{
        System.out.print(e);
        System.out.print(" ");
    });
}

public static void swap(int[] af,int a,int b){
    int temp = af[a];
    af[a] = af[b];
    af[b] = temp;
}
相关推荐
Chandler2431 分钟前
Go语言即时通讯系统 开发日志day1
开发语言·后端·golang
有梦想的攻城狮42 分钟前
spring中的@Lazy注解详解
java·后端·spring
野犬寒鸦1 小时前
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
linux·运维·服务器·数据库·后端·github
huohuopro2 小时前
thinkphp模板文件缺失没有报错/thinkphp无法正常访问控制器
后端·thinkphp
cainiao0806055 小时前
《Spring Boot 4.0新特性深度解析》
java·spring boot·后端
-曾牛5 小时前
Spring AI 与 Hugging Face 深度集成:打造高效文本生成应用
java·人工智能·后端·spring·搜索引擎·springai·deepseek
南玖yy5 小时前
C/C++ 内存管理深度解析:从内存分布到实践应用(malloc和new,free和delete的对比与使用,定位 new )
c语言·开发语言·c++·笔记·后端·游戏引擎·课程设计
计算机学姐6 小时前
基于SpringBoot的小区停车位管理系统
java·vue.js·spring boot·后端·mysql·spring·maven
BUG制造机.6 小时前
Go 语言 slice(切片) 的使用
开发语言·后端·golang
小鸡脚来咯6 小时前
请求参数:Header 参数,Body 参数,Path 参数,Query 参数分别是什么意思,什么样的,分别通过哪个注解获取其中的信息
java·spring boot·后端