冒泡排序
依次遍历数组元素,找出数组中最大值或者最小值,将其放在数组的头部或者尾部,然后将剩下的的元素再次遍历,找出其中的最大值或者最小值,进行同样的操作;
代码实现:
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);
};
}
这里不做过多说明,后期会对栈与堆进行更详细的说明