Java教程第七节:选择排序法和和冒泡排序法

选择法排序:
分为若干轮比较,每一轮找出一个最大值。
刘广法整理思路:假设有数组{ 1, 2, 3, 5, 98, 24, 6, 456, 14 },假设第一个数字最大,然后从第二个开始依次和第一个比,如果比第一个大,那就调换位置,每一轮找一个从剩下的找一个最大的。
public static void main(String[] args) { // 选择排序法 int a[] = { 1, 2, 3, 5, 98, 24, 6, 456, 14 }; for (int i = 1; i < a.length; i++) {// 循环轮数 for (int j = i; j < a.length; j++) {//剩下的所有数 if (a[j] > a[i - 1]) {// 第几轮那第几个数和所有数作比较并置换出最大值 int m = a[i - 1]; a[i - 1] = a[j]; a[j] = m; } } } System.out.println(Arrays.toString(a)); }
也可以这样写:
变换位置的地方有:int 初始值由原来的1 变成现在的0 ,循环的轮数也有变换,剩下的所有数的表达式也有变换
public static void main(String[] args) { // 选择排序法 int a[] = { 1, 2, 3, 5, 98, 24, 6, 456, 14 }; for (int i = 0; i < a.length - 1; i++) {// 循环轮数 for (int j = i - 1; j < a.length - 1; j++) {// 剩下的所有数 if (a[j + 1] > a[i]) {// 第几轮那第几个数和所有数作比较并置换出最大值 int m = a[i]; a[i] = a[j + 1]; a[j + 1] = m; } } } System.out.println(Arrays.toString(a)); }
Java控制台输出结果:
[456, 98, 24, 14, 6, 5, 3, 2, 1]
冒泡排序法:
刘广法思路:所有数都等待排序,第一轮就是选择一个小的放在后面,一直比较一直比较,那么最小的就跑到最后面了
public static void main(String[] args) { // 冒泡排序法 int a[] = { 2, 5, 6, 8, 93, 1, 328, 12, 5, 123, 485, 5 }; for (int i = 0; i < a.length-1; i++) { for (int j = 0; j < a.length - i - 1; j++) { if (a[j] < a[j + 1]) { int t = a[j + 1]; a[j + 1] = a[j]; a[j] = t; } } System.out.println(Arrays.toString(a)); } }
Java控制台输出结果:
[5, 6, 8, 93, 2, 328, 12, 5, 123, 485, 5, 1] [6, 8, 93, 5, 328, 12, 5, 123, 485, 5, 2, 1] [8, 93, 6, 328, 12, 5, 123, 485, 5, 5, 2, 1] [93, 8, 328, 12, 6, 123, 485, 5, 5, 5, 2, 1] [93, 328, 12, 8, 123, 485, 6, 5, 5, 5, 2, 1] [328, 93, 12, 123, 485, 8, 6, 5, 5, 5, 2, 1] [328, 93, 123, 485, 12, 8, 6, 5, 5, 5, 2, 1] [328, 123, 485, 93, 12, 8, 6, 5, 5, 5, 2, 1] [328, 485, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1] [485, 328, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1] [485, 328, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1]
文章原创,转载请注意出处,来源:刘广法博客,不保留必追究