首页 > 编程 > Java > 正文

java排序算法之哪一种好

2019-11-06 09:13:19
字体:
来源:转载
供稿:网友

欢迎讨论 回复 哪个算法+原因 即可

package Sort;public class Sort { /** * 算法A */ public static void sortA() { int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 }; for (int i = 0; i <=a.length - 1; i++) { for (int j = i + 1; j<=a.length - 1; j++) { if (a[j] <= a[i]) { int c = a[i]; a[i] = a[j]; a[j] = c; } } } for (int i = 0; i <= a.length - 1; i++) { System.out.PRintln(a[i]); } } /** * 算法B */ public static void sortB() { int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 }; 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 c = a[j]; a[j] = a[j+1]; a[j+1] = c; } } } for (int i = 0; i <= a.length - 1; i++) { System.out.println(a[i]); } } /** * 算法C */ public static void sortC(){ int a[] = { 10, 2, 3, 6, 5, 4, 9, 7, 1, 8 }; int length = a.length; while(true) { boolean isEnd = true; for(int i = 0; i < length - 1 ; i++) { // 标识是否全部交换完毕 int before = a[i]; int behind = a[i + 1]; if(behind < before) { // 如果后面数的值<前面数的值,则交换 a[i] = behind; a[i + 1] = before; isEnd = false; // 没有交换完毕 continue; } else if (i == length - 1) { // 如果最后一个人元素的场合下 还没有发生可以交换的事件 isEnd = true; } } if(isEnd) {break;} } for(int n : a) { System.out.print(n + ", "); } } public static void main(String[] args) { Sort.sortA(); Sort.sortB(); Sort.sortC(); } }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表