首页 > 代码库 > 排序算法
排序算法
1.选择排序
// 选择排序 每次扫描找出最小的那个,放到正确的位置。 public static int [] sort1(int [] data) { if(data =http://www.mamicode.com/= null) { return null; } int minIndex = 0; for(int i=0; i<data.length; i++) { minIndex = i; // 找出最小元素的索引 for(int j=i+1; j<data.length; j++) { if(data[j] < data[minIndex]) { minIndex = j; } } // 放到正确的位置 if(minIndex != i) { int temp = data[i]; data[i] = data[minIndex]; data[minIndex] = temp; } } return data; }
2.冒泡排序
// 冒泡排序 交换相邻的两个素,每一轮都会将最大的放到后面。 public static int [] sort2(int [] data) { if(data =http://www.mamicode.com/= null) { return null; } boolean flag = false; for(int i=1; i<=data.length; i++) { for(int j=0; j<data.length - i - 1; j++) { if(data[j] > data[j+1]) { int temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; flag = true; } } if(!flag) { break; } } return data; }
3.插入排序
// 插入排序 将新的元素插入到已排好序的列表中。 public static int [] sort3(int [] data) { if(data =http://www.mamicode.com/= null) { return null; } for(int i=1; i<data.length; i++) { int temp = data[i]; int j = i - 1; for(; j>=0; j--) { if(data[j] > temp) { data[j+1] = data[j]; } else { break; } } data[j+1] = temp; } return data; }
4.快速排序
// 快速排序 使用分治的思想。 public static int partition(int [] data, int left, int right) { int i = left; int j = right; int temp = data[i]; while(i < j) { while(i < j && data[j] > temp) { j--; } if(i < j) { data[i] = data[j];// data[j] = temp; } while(i < j && data[i] < temp) { i++; } if(i < j) { data[j] = data[i];// data[i] = temp; } } data[i] = temp; return i; } public static int [] sort(int [] data, int left, int right) { if(data =http://www.mamicode.com/= null) { return null; } int dp = 0; if(left < right) { dp = partition(data, left, right); sort(data, left, dp - 1); sort(data, dp + 1, right); } return data; }
先贴代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。