冒泡排序:
两个相邻元素之间两两进行比较,把大的元素放到后面。如有n个元素,第一次进行n-1轮比较。经过第一轮比较之后最大的数被放到最后,再进行第二轮(n-2)次比较,再把第二轮中最大的数放到最后,依次比对下去直到全部比对完成为止。
代码实现如下:
public static void main(String[] args) {
int[] arr= {2,52,2645,73,46,87};
int[] newarr=bubbleSort(arr);
System.out.println(Arrays.toString(newarr));
}
public static int[] bubbleSort(int[] arr) {
int temp;
for(int i=0;i<arr.length-1;i++) { //需要比较n-1轮
for(int j=0;j<arr.length-1-i;j++) {//根据a.length-1每轮逐渐减少1次
if(arr[i+1]<arr[i]) {//相邻元素间进行比较,符合条件就交换位置
temp =arr[i+1];
arr[i+1]=arr[i];
arr[i]=temp;
}
}
}
return arr;
}
运行结果如下:
[2, 46, 52, 73, 87, 2645]
插入排序:
第一轮:比较无序列表中的前两个数,然后按照顺序插入到有序列表中,剩下的数仍在无序表中。
第二轮:把无序表中剩下的第一个数与有序列表的两个数进行比较,然后把这个数插到合适的位置。
代码实现如下:
public static void main(String[] args) {
int[] arr= {2,52,2645,73,46,87};
int[] Arr=inserSort(arr);
System.out.println(Arrays.toString(Arr));
}
public static int[] inserSort(int[] a) {
for(int i=1;i<a.length;i++) {
int j=-1;
while(j<=i&&a[i]>a[++j]);//找到需要交换的位置
if(j<i) {//将j之后的数据移动一位,然后将a[i]移动到j处
int temp=a[i];//a[1]
for(int k=i-1;k>=j;k--) {
a[k+1]=a[k];
}
a[j]=temp;
}
}
return a;
}
运行结果如下:
[2, 46, 52, 73, 87, 2645]