当前位置:科技动态 > c语言、java实现归并排序

c语言、java实现归并排序

  • 发布:2023-10-05 14:44

因引用请在c++环境下运行

typedef struct
{
KeyType key; //关键字项
InfoType otherinfo; //其他数据项
}RedType;

//序列表类型

void mergePass(SqList& R, SqList& MR, int first, int mid, int last) {
int i = first, j = mid + 1, m = mid, n = last;
int k = 0.我++]; }
}
} while (i <= m) {
MR.r[k++] = R.r[i++];
}
while (j <= n) {
MR.r[k++] = R.r[j++]; }

for (i = 0; i < k; i++) {
R.r[first + i] = MR.r[i];
}
}


void Merge(SqList& R, SqList& MR, int first,int last) {
    if(first
        int mid = (first + last) / 2;
        Merge(R, MR, first, mid);
        合并(R、MR、mid+1、最后);
        mergePass(R、MR、第一个、中间、最后一个);
    }
}


int main()
{
 
        // 并排序
        SqList L;
        L.length = 5;
        L.r[0].key = 19;
        L.r[1].key = 15;
        L.r[2].key = 37;
        L.r[3].key = 12;
        L.r[4].键 = 25;
        

        SqList LT;
       LT.length = 5;
        
        for (int i = 0; i < L.length; i++)             printf("%d  ", L.r[i] .key);
        printf("\n");
        合并(L, LT, 0, 4);
        for (int i = 0; i < L.length; i++)
printf("%d  ", L.r[i].key);
        printf("\n");


}

 

 

java实现请看

https://www.sychzs.cn/p/36075856

另一种实现java的方式

导入java.util.ArrayList;
导入java.util.List;/*** @日期: 2020/12/26 13:56*/public class GuiBingSort {public static void mergePass(List list, List listCopy, int first, int mid, int last) {int i = first;int j = mid + 1;int m = mid;int n = 最后;int k = 0;while (i <= m && j <= n) {if (list.get(i) < list.get(j)) {listCopy.set(k++, list.get(i++));} else {listCopy.add(k++, list.get(j++));}}while (i <= m) {listCopy.add(k++, list.get(i++));}while (j <= n) {listCopy.add(k++, list.get(j++));}for (i = 0; i < k; i++) {list.set(first + i, listCopy.get(i));}}public static void merge(List 列表, List listCopy, int 第一个, int 最后) {if (第一个 < 最后一个) {int mid = (第一个 + 最后一个) / 2;merge(list , listCopy,first,mid);merge(list,listCopy,mid + 1,last);mergePass(list,listCopy,first,mid,last);}}public static void main(String[] args) {List list = 新 ArrayList<>();List listcopy = 新 ArrayList<>();list.add(0, 19);list.add(1, 15);list.add(2, 37 );list.add(3, 12);list.add(4, 25);System.out.println("归并排序:");System.out.println("排序前:");for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");}System.out.println();merge(list, listcopy, 0, list. size() - 1);System.out.println("排序后:");for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) +“”);}}
}

 

相关文章