当前位置: 代码迷 >> 综合 >> Java学习笔记03 简单排序
  详细解决方案

Java学习笔记03 简单排序

热度:61   发布时间:2024-02-05 06:45:23.0

冒泡排序

依次遍历数组元素,找出数组中最大值或者最小值,将其放在数组的头部或者尾部,然后将剩下的的元素再次遍历,找出其中的最大值或者最小值,进行同样的操作;

代码实现:

package com.briup.test;
import java.util.Arrays;
public class Bubbling{public static void main (String[] args){int arr[]={4,9,2,5,2};System.out.println(Arrays.toString(arr));for(int i=0;i<arr.length;i++){for(int j=0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){int temp=arr[j+1];arr[j+1]=arr[j];arr[j]=temp;}}}for(int s:arr){System.out.print(s+" ");}}
}

选择排序

将数组元素第一位当作数组元素最小值或者最大值,记录数值和元素下标,然后与其他元素进行比较,如果有比这个数小或者大的数,那么他们数值交换,元素下标也进行替换。

代码实现:

package com.briup.test;
import java.util.Arrays;
public class Choose{public static void main(String[] args){int arr[]={8,6,9,3,5};System.out.println(Arrays.toString(arr));for(int i=0;i<arr.length;i++){int min = arr[i];int index = i;for(int j=i+1;j<arr.length;j++){if(arr[index]>arr[j]){min=arr[j];index=j;}}int temp=arr[i];arr[i]=min;arr[index]=temp;}for(int s:arr){System.out.print(s+" ");}}
}

插入排序

首先数组第一位元素与第二位进行比较(这里按照从小到大排序进行说明),如果第二位元素比第一位元素小,那么两个元素位置进行交换;接着第三位元素数值与前两位数值依次比较,如果比第二位元素的数值小,那么交换位置,接着在与第一位数值进行比较,如果也比第一位小,那么继续交换位置;数组中的剩下的元素依次与前面的元素进行比较,直到最后一位数不再交换位置。

代码实现:

package com.briup.test;import java.util.Arrays;public class Insert{public static void main(String[] args){int arr[]={3,2,7,5,4};System.out.println(Arrays.toString(arr));for(int i=1;i<arr.length;i++){for(int j=i;j>0;j--){if(arr[j]<arr[j-1]){int temp =arr[j-1];arr[j-1]=arr[j];arr[j]=temp;}}}for(int s:arr){System.out.print(s+" ");}}
}

 

数组下标

这里要说明的是,元素的下标都是从0开始,例如一个数组[2,5,3],其中2的下标不是1而是0,在计算机中都是从零开始;

栈与堆

简单来说栈与堆都是用进行计算机存储,不同的是存储的类型不同,栈用来用来存储局部变量表、操作数栈、动态链接、方法出口等信息,堆存储对象,对象包含类的信息,指向方法区,栈可以存储地址指向堆空间,因为栈的存储空间十分有限。

代码示例

package com.briup.test;public class Test{public static void main (String[] args){Person ps=new Person();int a =10;ps.age=20;ps.chage(a,ps);System.out.println(a+","+ps.age);}
}class Person{int age;static void chage(int a1,Person ps){a1=11;ps.age=21;System.out.println(a1+","+ps);};
}

这里不做过多说明,后期会对栈与堆进行更详细的说明