`
什么都不懂的孩子
  • 浏览: 27014 次
社区版块
存档分类
最新评论

关于java数组以及两种简单排序算法

阅读更多

关于数组的使用,我们要从其实例化和初始化说起,实例化的方法多种多样,掌握常用的几种方法就可以了,下面给几个一维数组的实例化对象:

数据类型  [ ] 数组名 = new  数据类型[长度];

数组名 = new 数据类型[长度];

数组名 = new 数组类型[]{值,...};

java数组在实例化过程中会给数组元素赋初值,像int的初值是0,string的初值是null,如果是自己定义的类,那是初值就是null,数组的的方法只有length,没有其他的方法,虽然java里面不能直接操作地址,但是不可否认数组名代表的是一个地址,所以在我们传参的时候可以直接传数组名,但这是对该数组进行操作的,使用时要多加注意,二维数组其实就是双重一维数组,事实上可以看做是一个矩阵,每一行或者每一列可以作为一个一维数组。

数组在内存中是线性的连续的储存空间,以字节为单位,二维数组在内存中是一行一行存储的,这根C语言是一样的,据以上来说,数组的大小在实例化的时候就已经固定下来了,所以不可以在编译后输入数组的大小,因为也不可能编译通过,肯定会报错,还有对数组的操作过程中,要时刻注意一个数组越界问题,当抛出ArrayIndexOutOfBoundsException就代表数组越界,这是个很严重也很难察觉的问题,使用时要多加注意。

下面来介绍几个简单的数组排序算法

  1.  冒泡:
    public class Sort {
     public void sort(int[] data){ //定义两个参数,数组首地址与数组大小
      int temp;
      for(int i=0;i<data.length;i++){ //冒泡,降序:
       for(int j=data.length-1;j>i;j--){
        if(data[i]<data[j]){ //每个数都比较n次,如果data[i]>data[j]成立,则交换两个数
         temp =data[i];
         data[i] = data[j];
         data[j] = temp;
        }
        
        for(int q=0;q<data.length;q++){
         System.out.print(data[q]+" "); //打印每一次排序后的序列
        }
        System.out.println(); //换行
       }
      }
     }
     冒泡排序的思想就是每一次循环遍历数组就找出一个最小的放在最前面,第一遍遍历把data[0]拿出来和后面的一个数比,如果后面的数小于data[0],则两个数交换,再用data[0]和后面的第二个数比,如果小于或者等于,则不动,继续往后比,直到最后一个数,这是就找到一个最小的数,然后从data[1]进行第二次遍历循环,一直到data.length-1次。
  2. 快速排序
    class quicksort
    {
        public int data[];
         
        private int partition(int sortArray[],int low,int hight)
        {
            int key = sortArray[low];     
            while(low<hight)
            {
                while(low<hight && sortArray[hight]>=key)
                    hight--;
                sortArray[low] = sortArray[hight];
                while(low<hight && sortArray[low]<=key)
                    low++;
                sortArray[hight] = sortArray[low];
            }
    
            sortArray[low] = key;
    
            return low;
    
        }
        public void sort(int low,int hight)
    
        {
            if(low<hight)
            {
                int result = partition(data,low,hight);
                sort(low,result-1);
                sort(result+1,hight);
            }
        }
    
     快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
     
1
0
分享到:
评论

相关推荐

    Java排序算法实现:冒泡与选择排序示例代码

    这个资源是关于Java中排序算法实现的简单示例。排序算法是计算机科学中的基础概念,用于按升序或降序排列数据集。这里提供了两种常见的排序算法实现:冒泡排序和选择排序。 冒泡排序(Bubble Sort) 是一种基本的...

    Java实现归并排序算法(源代码)

    归并排序是一种基于分治策略的排序算法,它将待排序的数组分成若干个子数组,每个子数组再递归地进行排序,最后将已排序的子数组合并成一个完整的有序数组。该算法的核心在于合并两个有序数组的操作,通过比较两个...

    Java常见的排序算法

    Java中常见的排序算法有以下几种: 冒泡排序(Bubble Sort):通过比较相邻元素的大小,将较大的元素逐渐向后移动,直到整个序列有序。 选择排序(Selection Sort):每次遍历数组,找到最小(或最大)的元素,将其...

    跟我学Java面向对象程序设计技术及应用——应用冒泡排序算法实现数组元素排序的Java程序实现示例.pdf

    杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序的 Java 程序实现示例 1.1 ...

    Java实现希尔排序算法(源代码)

    它首先将待排序的数组元素按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个数组被分为一组,算法便终止。希尔排序的时间复杂度与增量序列...

    几种经典的排序算法java实现

    冒泡排序、快速排序、直接插入排序、简单选择排序 等经典算法的思想介绍,大白话简单易懂。并用java实现。代码拿去即可用,不需做任何修改! 部分内容: /** * 快排:O(n*logn);如果是从小到大排序; * 思想:选...

    Java实现快速排序算法(源代码)

    在Java实现中,快速排序算法通过quickSort方法接收待排序数组和左右索引作为参数,递归地调用partition方法进行数据划分,并分别对划分后的子序列进行排序。partition方法选择数组中的一个元素作为基准,通过比较和...

    Java实现插入排序算法(源代码)

    插入排序是一种简单直观的排序算法,其工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法从数组的第二个元素开始,将其视为待插入元素,然后将该元素与已排序序列...

    Java中快速排序算法和经典案例

    算法,我可以为您详细解释Java中快速排序算法的实现,并提供一个代码示例。快速排序是一种高效的排序算法,基于分治策略。其基本步骤如下: 1. 选择一个基准元素(pivot),通常选择数组的第一个元素或者最后一个...

    Java实现堆排序算法(源代码)

    堆排序是一种基于比较的排序算法,通过构建大顶堆或小顶堆来实现元素的排序。其实现原理主要包括两个步骤:首先,将待排序的序列构建成一个大顶堆(或小顶堆),此时堆顶元素即为序列的最大值(或最小值);然后,将...

    Java中快速排序算法经典的代码

    当然,我可以为您详细解释Java中快速排序算法的实现,并提供一个代码示例。快速排序是一种高效的排序算法,基于分治策略。其基本步骤如下: 1. 选择一个基准元素(pivot),通常选择数组的第一个元素或者最后一个...

    Java快速排序算法.pptx.pptx

    快速排序是一种采用分治法策略的高效排序算法,其基本思想是选取一个基准元素,将数组分为两部分,使得一部分的元素都小于基准元素,另一部分的元素都大于基准元素。 快速排序过程 快速排序的过程包括选取基准、分区...

    冒泡排序算法实现javascript, python, go, java, php

    冒泡排序算法是一种简单直观的排序算法,主要通过比较相邻元素的值,依次交换位置,直到没有任何一对数字需要交换,从而完成排序。该算法得名于较小或较大的元素会像水中的气泡一样逐渐“浮”到数列的顶端或底端。...

    JAVA实现排序算法和折半查找

    包括常见的排序算法,以及折半查找,首先对要查找的数据排好序,然后用递归调用的方式实现折半查找(包括了两种实现方式)。指定一个排好序的数组和要查找的值,同时指定要查找的左边界和有边界。左右边界要位于数组...

    堆排序Java代码示例

    堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将无序的元素构建成一个堆)和排序(利用堆的性质进行排序)。 代码首先定义了一个HeapSort类,其中...

    java算法大全源码包.zip

    Java实现如下算法: 1.链表 链表用来存储数据,由一系列的结点组成。这些结点的物理地址不... 利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。

    冒泡排序-java版本

    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 附件中是使用 ...

    java插入排序与合并排序

    针对200000长度的数组,采用插入排序和合并排序,对比两种算法的时间复杂度

    堆排序 Java代码示例

    堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将无序的元素构建成一个堆)和排序(利用堆的性质进行排序)。 代码首先定义了一个HeapSort类,其中...

Global site tag (gtag.js) - Google Analytics