将一个无序系列,分成小系列,相邻两个小系列进行排序合并,再将两个相邻小系列排序合并,。。。。
int[] data = {0,5,4,8,9,3,2,67,23}
len = 9
第一次每个元素一组 0,5,4,8,9,3,2,67,23
相邻排序合并 0 5,4 8,3 9,2 67,23
第二次2个元素一组
相邻排序合并 0 4 5 8,2 3 9 67,23
第三次4个元素一组
按思路写。。。。
- public static void sort(){
- int[] data = {0,5,4,8,9,3,2,67,23};
- int len = data.length;
-
-
- for(int arr_size =1;arr_size
1;arr_size*=2){ - int group_cnt = len/arr_size;
- int group_div = len%arr_size;
-
- for(int i=0,j=1;i
2,j+=2){ - int first_index = arr_size*i,second_index=arr_size*j;
- ArrayList
listarr = new ArrayList<>(); - int first_offset = 0,second_offset=0;
-
- for(;first_offset
- //sort
- if(data[first_index+first_offset]
- listarr.add(data[first_index+first_offset]);
- first_offset++;
- }else{
- listarr.add(data[second_index+second_offset]);
- second_offset++;
- }
- }
-
- if(first_offset < second_offset){
- for(;first_offset < arr_size;first_offset++){
- data[second_index+first_offset] = data[first_index+first_offset];
- }
- }
-
- for(int copy =0;copy
- data[first_index+copy]=listarr.get(copy);
- }
-
- }
-
- if(group_div == 1){
- //group_cnt * arr_size ~len
- /*int first_index = group_cnt * arr_size;
- for(int start_index = first_index+ 1;start_index <= len -1;start_index++){
- int insert_data = data[start_index];
- for(int i = start_index -1;i >=first_index;i--){
- if(data[i]>insert_data){
- data[i+1]=data[i];
- }else{
- data[i+1]=insert_data;
- break;
- }
- }
- }*/
- if(group_cnt == 2){
- //group_cnt * arr_size ~len
- int first_index = group_cnt * arr_size;
- for(int start_index = first_index;start_index <= len -1;start_index++){
- int insert_data = data[start_index];
- for(int i = start_index -1;i >=0;i--){
- if(data[i]>insert_data){
- data[i+1]=data[i];
- }else{
- data[i+1]=insert_data;
- break;
- }
- }
- }
- }
- }
- }
- }
自底向上,这回溯了
自顶向下分治,递归,才是正解!!!!

-
相关阅读:
SpringMVC返回不带引号的字符串方案汇总
【重识云原生】第六章容器6.1.7.3节——cgroups数据结构剖析
SOLIDWORKS 2023新功能揭秘!升级版轻松找到材料明细表修改
《UML和模式应用(原书第3版)》2024新修订译本部分截图
免费最强下载工具IDM,没有之一
数据结构算法之——时间复杂度和空间复杂度
uni-app:js实现数组中的相关处理-数组复制
JAVA接入OPC DA2.0详细流程
Java设计模式之策略模式
用57000字讲解完2022年Java岗面试最常问的100道题,太肝了
-
原文地址:https://blog.csdn.net/lei7143/article/details/133018377