10 冒泡排序
思路分析:
核心思想为:
使数组的当前部分(初始时为原数组)的最后一个值为最大值(升序)为或最小值(降序)
使最后一个值为最大值的具体操作为(升序):在数组的当前部分里面每次(从第一个开始)都拿前面一个与后面相相比较,若比后面的值大,就交换,直到前面一个数访问当前数组的倒数第二个元素为止,
使最后一个值为最小值的具体操作为(降序):在数组的当前部分里面每次(从第一个开始)都拿前面一个与后面相相比较,若比后面的值小就交换,直到前面一个数访问当前数组的倒数第二个元素为止,
推导过程如下所示:
int[] a={1,2,3,4,5};以a数组为例,可以得到如下所示的表(以降序为例)
准备工作
//bubble sort的意思是冒泡排序
int[] a={9,8,7,6,5,4};
// int[] a={1,2,3,4,5,6};
// int[] a={1,4,121,4,5,6};
System.out.println("需要排序的原数组a如下所示:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();//换行
A.升序
1.核心代码
//升序
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>=a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("排序后的数组a(升序)如下所示");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
2.运行截图
B.降序
1.核心代码:
//降序
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]<=a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("排序后的数组a(降序)如下所示");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}