Hello,大家好!想必大家都听说过冒泡排序和插入排序吧。可我们往往是一看就会,一写就废!一问就是报意思,我不造啊!
那么,实现冒泡排序和插入排序的一个核心原理是什么勒?
首先来说说冒泡排序,这应该是最容易理解的一种排序方法啦!
其核心思想是:从头开始,比较相邻的两个数字,升序则较大的放在前面,通常,有n个数字,则需要比较n-1轮。
实现的代码:
使用了双重for循环
public static void main(String[] args) {
/*
* 需求分析:实现冒泡排序,输出排序后年龄
* */
int numAge[]={19,49,21,38,41,59,60,90,12};
for (int i = 0; i <numAge.length ; i++) {
for (int j = 0; j < numAge.length-i-1; j++) {
//判断条件进行交换
if(numAge[j]>numAge[j+1]){
int tem=numAge[j];
numAge[j]=numAge[j+1];
numAge[j+1]=tem;
}
}
}
//输出排序后的数组
for (int i = 0; i < numAge.length; i++) {
System.out.print(numAge[i]+"\t");
}
}
运行结果:
接下来说说插入排序,其核心内容是:开始时,将第一个数据作为一部分,第一部分的是以及排好序的了,将剩下数据作为第二部分,且是无序的!
接下来:我们将第二部分中的第一个数据和第一部分的最后一个数据比较(此时最后一个数据也是第一个),如果a[0]>a[1],则进行交换,且将第二个数据也列出第一部分,依次类推,此时拿第二部分的第一个数据(即第三个数据)同第一部分的最后一个数据进行比较(即第二个数据),直到n-1次比较后,排序完成。
实现代码:
使用调用方法的方式进行排序!
public static void main(String[] args) {
/*
* 需求分析:实现插入排序
* */
//创建一个年龄数组
int numAge[]={12,79,63,52,73,81,95,66,74,38};
//调用方法
System.out.println("排序前:");
showAge(numAge);
insertSort(numAge);
System.out.println("排序后:");
showAge(numAge);
}
public static void insertSort(int []a) {
for (int i = 1; i < a.length; i++) {
//第一部分
int part1=i-1;
int temp=a[i];
while(part1>=0&&a[part1]>temp)
{
a[part1+1]=a[part1];
part1--;
}
a[part1+1]=temp;
}
}
public static void showAge(int[] num) {
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+"\t");
}
System.out.println();
}
代码结果:
少说多练,秃头之日可待!