练手之 合并排序
package algorithm; import java.util.ArrayList; import java.util.List; public class mergemy { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(99); list.add(98); list.add(99); list.add(100); list.add(50); list.add(33); list.add(22); System.out.println(mergesort(list).toString()); } public static List<Integer> mergesort(List<Integer> list) { if (list.size() < 2) { return list; } return merge(mergesort(list.subList(0, list.size() / 2)), mergesort(list.subList(list.size() / 2, list.size()))); } public static List<Integer> merge(List<Integer> left, List<Integer> right) { List<Integer> result = new ArrayList<Integer>(); int j = 0; for (int i = 0; i < left.size(); i++) { Integer valueLeft = left.get(i); for (; j < right.size();) { Integer valueRight = right.get(j); if (valueLeft <= valueRight) { result.add(valueLeft); //左值小,加入左值,然后获取一个新的左值来比较; break; }else { result.add(valueRight); //右值小,加入右值,然后获取一个新的右值来比较; j++; continue; } } if (j >= right.size()) { result.add(valueLeft); //右值比完了,直接放入左值; } } for (;j<right.size();j++) { //右值还没有比完,加入右值 result.add(right.get(j)); } return result; } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步