java数组.day16(冒泡排序,稀疏数组)

这篇具有很好参考价值的文章主要介绍了java数组.day16(冒泡排序,稀疏数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

冒泡排序

  1. 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!

  2. 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。

  3. 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。

代码示例:

public class ArrayDemoe7 {
    public static void main(string[]args) {
        int[] a = {1,4,5,6,72,2,2,2,25,6,7};
        int[] sort = sort(a);//调用完我们自己写的排序方法以后,返回一个排序后的数组
​
    }
    public static int[] sort(int[]array){
        //临时变量
        int temp = 0;
        
        //外层循环,判断我们这个要走多少次;
        for (int i = 0; i < array.length-1;i++) {
        //内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置
            for (int j = 0; j < array.length-1-i;j++) {
                if (array[j+1]>array[j]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
        }
   }
return array;
)
​

稀疏数组

  1. 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。‘

  2. 稀疏数组的处理方式是:

    1. 记录数组一共有几行几列,有多少个不同值

    2. 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

如下图:左边是原始数组,右边是稀疏数组

java数组.day16(冒泡排序,稀疏数组),java,算法,排序算法

在二维数组中其中大部分都是一样的数值,但存在一小部分数值不同时,挑出不同的组成稀疏数组

例如上图中[o]排的意思是该稀疏数组记录的是具有6行7列的二维数组,其中一共有8个不同的值,下面[1],[2],[3]...代表的意思,举例[1]:第0行,第3列的值是22。

代码示例:

public class Array {
    public static void main(String[] args) {
        //1.创建一个二维数组11* 1i0:没有棋子,1:黑棋2:白棋
        int[][]array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始的数组
        System.out.println("输出原始的数组");
    
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print( anInt+"\t" );
            }
            System.out.print1n();
        }
        //转换为稀疏数组保存
        System.out.print1n( "=====================");
//获取有效值的个数
    int sum = 0;
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11;j++) {
            if ( array1[i][j]!=0){
                sum++;
            }
        }
    }
    System.out. println("有效值的个数:"+sum) ;
    //2.创建一个稀疏数组的数组
    int[][]array2 = new int[sum+1][3];
    array2[0][0] = 11;//行数
    array2[0][1] = 11;//列数
    array2[0][2] = sum;//值
​
    //遍历二维数组,将非零的值,存放稀疏数组中
    int count=o;
    for (int i = e; i < array1 . length ; i++) {
        for (int j = o; j < array1[i].iength; j++) {
            if ( array1[i][j]!=o){
                count++;
                array2[count][0] = i;
                array2[count][1] = j;
                array2[countj[2] = array1[i][j];
                       }
                   }
               }
    //输出稀疏数组
        System.out.print1n("稀疏数组");
        for (int i = o; i < array2.length; i++) {
        System.out.print1n(array2[i][0]+""\t"
        +array2[i][1]+"\t”
        +array2[i][2]+"\t");
​
        }
        System. out.print1n( "=====================");
        System.out.println(“还原"");
        //1.读取稀疏数组
        int[][]array3 = new int[array2[0][0]][array2[0][1]];
        //2.给其中的元素还原它的值
        for (int i = 1; i < array2.length; i++) {
        array3[array2[i][0]][array2[i][1]] = array2[i][2];
        //3.打印
        System.out.println("输出还原的数组");
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
​
    }
}

 文章来源地址https://www.toymoban.com/news/detail-848199.html

到了这里,关于java数组.day16(冒泡排序,稀疏数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Java 与排序算法(1):冒泡排序

    Java 与排序算法(1):冒泡排序

    冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过不断交换相邻两个元素的位置,使得较大的元素逐渐往后移动,直到最后一个元素为止。冒泡排序的时间复杂度为 O ( n 2 ) O(n^2) O ( n 2 ) ,空间复杂度为 O ( 1 ) O(1) O ( 1 ) ,是一种稳定的排序算法。 其实现过程

    2024年02月11日
    浏览(9)
  • (四)Java算法:冒泡排序

       冒泡排序 (Bubble Sort),是一种计算机科学领域的较简单的排序算法。它的工作原理是:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果不是指定顺序(比如从小达到)就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也

    2024年02月04日
    浏览(10)
  • Java:简单算法:冒泡排序、选择排序、二分查找
  • 【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

    【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

    525. 连续数组 给定一个二进制数组  nums  , 找到含有相同数量的  0  和  1  的最长连续子数组,并返回该子数组的长度。 本题的元素只有0和1,根据题目意思,我们可以把题目看成找一段最长的子区间使得区间的0 和1的数量相同,我们可以对其优化将所有的0变成-1,这样这

    2024年02月03日
    浏览(5)
  • 用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

    用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

      目录 一、冒泡排序 1.冒泡排序介绍 2.排序的思路 3.完整代码 二、折半查找 1.折半查找介绍 2.查找的思路 3.完整代码 三、逆序数组 1.逆序思路 2..完整代码 冒泡排序是众多排序的一种,无论在C语言或者Java中都很常见,后续在数据结构中也会用到 1.冒泡排序介绍 (1)冒泡排

    2024年02月05日
    浏览(12)
  • Java-三个算法冒泡-选择排序,二分查找

    Java算法: 冒泡排序; 解析:将前后两个数对比,将大的数(或小的)调换至后面,每轮将对比过程中的最大(或最小)数,调到最后面。每轮对比数减一;初始对比数为数组长度-1. 选择排序: 解析:选择第一个数依次与其他元素对比,数值小的或(大的)交换位置至前方(

    2024年02月11日
    浏览(8)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序,堆排序】超详细~~

    (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序,堆排序】超详细~~

    目录 冒泡排序(BubbleSort): 代码详解:  冒泡排序的优化:  选择排序(SelectSort): 代码详解:  插入排序(InsertSort): 代码详解:  希尔排序(ShellSort):  法一(交换法)代码详解:  法二(移位法--插入排序的优化)代码详解: 快速排序(QuickSort):  代码详解:  归并排

    2024年02月20日
    浏览(13)
  • 七大排序算法——冒泡排序,通俗易懂的思路讲解与图解(完整Java代码)

    七大排序算法——冒泡排序,通俗易懂的思路讲解与图解(完整Java代码)

    排序:所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 上述待排序的数中,有两个5。 将 前面 的5标记一个a, 将 后面 的5标记一个b。 通过算法进行排序后,这一组数就有序了, 但是要看两个相同的5的位置是否有改变。

    2024年02月16日
    浏览(10)
  • 数组及详解冒泡排序

    数组及详解冒泡排序

    铁汁们,今天给大家分享一篇数组及详解冒泡排序,来吧,开造⛳️ 数组的 定义 :是一组相同类型元素的集合。 一维数组在创建时, 未给出确定的数组大小值,则该数组必须得初始化,数组的大小根据初始的内容来确定 ,eg:int arr[]={1,2,3,4,5,6}。若不初始化,则编译器会报

    2024年02月07日
    浏览(7)
  • JavaScript 数组如何实现冒泡排序?

    冒泡排序是一种简单但效率较低的排序算法,常用于对小型数据集进行排序。 它的原理是多次遍历数组,比较相邻元素的大小,并根据需要交换它们的位置,将最大(或最小)的元素逐渐“冒泡”到数组的一端。这个过程会重复进行,直到整个数组排序完成。 在JavaScript中,

    2024年02月09日
    浏览(4)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包