添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
// sort a 2d array by merge sort void merge_sort_2d ( int array [ M ] [ N ] , int left_i , int left_j , int right_i , int right_j , int array_extra [ M ] [ N ] ) { // TODO: bound check int l = to_index_1d ( left_i , left_j ) ; int r = to_index_1d ( right_i , right_j ) ; if ( l >= r ) { return ; } // divide part int mid = l + ( r - l ) / 2 ; int mid_i = to_index_2d_row ( mid ) ; int mid_j = to_index_2d_col ( mid ) ; merge_sort_2d ( array , left_i , left_j , to_index_2d_row ( mid ) , to_index_2d_col ( mid ) , array_extra ) ; merge_sort_2d ( array , to_index_2d_row ( mid + 1 ) , to_index_2d_col ( mid + 1 ) , right_i , right_j , array_extra ) ; // conquer part int i , j , k ; int left_len = mid - l + 1 ; int right_len = r - mid ; for ( i = l ; i <= mid ; i ++ ) { array_extra [ to_index_2d_row ( i ) ] [ to_index_2d_col ( i ) ] = array [ to_index_2d_row ( i ) ] [ to_index_2d_col ( i ) ] ; for ( j = mid + 1 ; j <= r ; j ++ ) { array_extra [ to_index_2d_row ( j ) ] [ to_index_2d_col ( j ) ] = array [ to_index_2d_row ( j ) ] [ to_index_2d_col ( j ) ] ; for ( i = l , j = mid + 1 , k = l ; i <= mid && j <= r ; k ++ ) { if ( array_extra [ to_index_2d_row ( i ) ] [ to_index_2d_col ( i ) ] < array_extra [ to_index_2d_row ( j ) ] [ to_index_2d_col ( j ) ] ) { array [ to_index_2d_row ( k ) ] [ to_index_2d_col ( k ) ] = array_extra [ to_index_2d_row ( i ) ] [ to_index_2d_col ( i ) ] ; i ++ ; } else { array [ to_index_2d_row ( k ) ] [ to_index_2d_col ( k ) ] = array_extra [ to_index_2d_row ( j ) ] [ to_index_2d_col ( j ) ] ; j ++ ; // numbers left while ( i <= mid ) { array [ to_index_2d_row ( k ) ] [ to_index_2d_col ( k ) ] = array_extra [ to_index_2d_row ( i ) ] [ to_index_2d_col ( i ) ] ; i ++ , k ++ ; while ( j <= r ) { array [ to_index_2d_row ( k ) ] [ to_index_2d_col ( k ) ] = array_extra [ to_index_2d_row ( j ) ] [ to_index_2d_col ( j ) ] ; j ++ , k ++ ; int main ( void ) { int matrix [ 5 ] [ 5 ] = { 4 , 1 , 0 , 2 , 8 , 10 , 3 , 24 , 2 , 8 , 9 , 0 , 37 , 29 , 3 , 43 , 22 , 7 , 11 , 0 , 5 , 67 , 3 , 2 , 0 } ; int matrix_extra [ 5 ] [ 5 ] = { 0 } ; merge_sort_2d ( matrix , 0 , 0 , 4 , 4 , matrix_extra ) ; // print matrix for ( int i = 0 ; i < 5 ; i ++ ) { for ( int j = 0 ; j < 5 ; j ++ ) { printf ( "%d, " , matrix [ i ] [ j ] ) ; printf ( "\n" ) ; // appendix, 1d merge sort void merge_sort ( int array [ ] , int l , int r ) { if ( l >= r ) { return ; } int mid = l + ( r - l ) / 2 ; merge_sort ( array , l , mid ) ; merge_sort ( array , mid + 1 , r ) ; int i , j , k ; int n1 = mid - l + 1 ; int n2 = r - mid ; int left [ n1 + 1 ] , right [ n2 + 1 ] ; for ( i = l ; i <= mid ; i ++ ) { left [ i - l ] = array [ i ] ; for ( j = mid + 1 ; j <= r ; j ++ ) { right [ j - mid - 1 ] = array [ j ] ; left [ n1 ] = right [ n2 ] = INT_MAX ; for ( i = 0 , j = 0 , k = l ; k <= r ; ) { if ( left [ i ] <= right [ j ] ) { array [ k ++ ] = left [ i ++ ] ; } else { array [ k ++ ] = right [ j ++ ] ;
package com.chumi.dac.sp.csr.test;
 * 代码转换
public class test {
    public static final int  M=5;
    public static final int  N=5;
    public static final int  INT_MAX=2147483647;
    public static void main(String[] args) {
        int[][] matrix = {{4, 1, 0, 2, 8}, {10, 3, 24, 2, 8}, {9, 0, 37, 29, 3}, {43, 22, 7, 11, 0}, {5, 67, 3, 2, 0}};
        int[][] matrix_extra = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}};
        test obj=new test();
        obj.merge_sort_2d(matrix, 0, 0, 4, 4, matrix_extra);
        // print matrix
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print(matrix[i][j]+",");
            System.out.println("");
        int to_index_2d_row(int k) {
            // 2d matrix, N cols
            return k / N;
        int to_index_2d_col(int k) {
            // 2d matrix, N cols
            return k % N;
        int to_index_1d(int i, int j) {
            return j + i * N;
        void swap(int x, int y) {
            int temp = x;
            x = y;
            y = temp;
        // sort a 2d array by merge sort
        void  merge_sort_2d(int[][] array_test, int left_i, int left_j, int right_i, int right_j,  int[][] array_extra) {
//        array_test = new int[M][N];
//        array_extra = new int[M][N];
            int l = to_index_1d(left_i, left_j);
            int r = to_index_1d(right_i, right_j);
            if (l >= r) { return; }
            // divide part
            int mid = l + (r - l) / 2;
            int mid_i = to_index_2d_row(mid);
            int mid_j = to_index_2d_col(mid);
            merge_sort_2d(array_test, left_i, left_j, to_index_2d_row(mid), to_index_2d_col(mid), array_extra);
            merge_sort_2d(array_test, to_index_2d_row(mid + 1), to_index_2d_col(mid + 1), right_i, right_j, array_extra);
            // conquer part
            int i, j, k;
            int left_len = mid - l + 1;
            int right_len = r - mid;
            for (i = l; i <= mid; i++) {
                array_extra[to_index_2d_row(i)][to_index_2d_col(i)] = array_test[to_index_2d_row(i)][to_index_2d_col(i)];
            for (j = mid + 1; j <= r; j++) {
                array_extra[to_index_2d_row(j)][to_index_2d_col(j)] = array_test[to_index_2d_row(j)][to_index_2d_col(j)];
            for (i = l, j = mid + 1, k = l; i <= mid && j <= r; k++) {
                if (array_extra[to_index_2d_row(i)][to_index_2d_col(i)]
                        < array_extra[to_index_2d_row(j)][to_index_2d_col(j)]) {
                    array_test[to_index_2d_row(k)][to_index_2d_col(k)]
                            = array_extra[to_index_2d_row(i)][to_index_2d_col(i)];
                    i++;
                } else {
                    array_test[to_index_2d_row(k)][to_index_2d_col(k)]
                            = array_extra[to_index_2d_row(j)][to_index_2d_col(j)];
                    j++;
            // numbers left
            while (i <= mid) {
                array_test[to_index_2d_row(k)][to_index_2d_col(k)] = array_extra[to_index_2d_row(i)][to_index_2d_col(i)];
                i++; k++;
            while (j <= r) {
                array_test[to_index_2d_row(k)][to_index_2d_col(k)] = array_extra[to_index_2d_row(j)][to_index_2d_col(j)];
                j++; k++;
        // appendix, 1d merge sort
        void merge_sort(int array[], int l, int r) {
            if (l >= r) { return; }
            int mid = l + (r - l) / 2;
            merge_sort(array, l, mid);
            merge_sort(array, mid + 1, r);
            int i, j, k;
            int n1 = mid - l + 1;
            int n2 = r - mid;
            int[] left=new int[n1+ 1];
            int[] right=new int[n2 + 1];
            for (i = l; i <= mid; i++) {
                left[i - l] = array[i];
            for (j = mid + 1; j <= r; j++) {
                right[j - mid - 1] = array[j];
            left[n1] = right[n2] = INT_MAX;
            for (i = 0, j = 0, k = l; k <= r;) {
                if (left[i] <= right[j]) {
                    array[k++] = left[i++];
                } else {
                    array[k++] = right[j++];

反思:好久没看C语言和Java语言,有些语法细节渐渐忘记了。。

C代码:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;limits.h&gt;#define M 5#define N 5int to_index_2d_row(int k) { // 2d matrix, N cols return k / N;}int to_index_2d_col(int k) { // 2d matrix, N cols return k % N;} Java底层是由C++去编写的,而C/C++由是封装汇编指令,进而为二进制被计算机识别。所以当我们作为Java开发者,写好Java代码后,是需要进过JavaComplier进行编译生成class字节码文件,然后由类加载器将字节码文件加载至Java虚拟机内存中进行使用,JVM通过调用C的指令汇编,从而使得代码生效。 本文将简单聊聊博主对Java类加载机制相关知识的理解。 一、Class字节码生成原理 这对于大多数开发者而已,应该耳熟能详,... 一、概念的了解 1.JVM——Java虚拟机,跨平台翻译,Java Virtual Machine; 2.JRE——Java程序的运行环境,包含运行时所需的类库,Java Runtime Environment; 3.JDK——Java开发工具包,包括javac编译器、java运行工具,Java Development Kit; 2.到命令行开始 java -jar C2j-Complier.jar -m interpreter -f test.c java -jar C2j-Complier.jar -m codegen -d true -f test.c 启动模式,默认为解释器 是否打开调试信息,默认为false(建议不开启) 指定运行文件的路径 void swap ( int arr[ 10 ], int i, int j) { 生产环境却报错 查找日志信息,发现Kerberos认证的时候,域名解析出现问题?!! 登录生产环境ping 043节点,能ping通说明域名是能解析成IP地址的(有DNS服务器)蓝瘦香菇,明明报错是域名解析问题为什么能ping通呢? 于是把本地Java访问集群代码改成IP试一试,呵呵报错了 Caused by: org.ietf.jgss.GSSException: No v...
### 回答1: C语言Java换器是一种可将C语言代码换为Java语言代码的工具。它可以帮助开发人员将已经存在的C语言项目迁移到Java平台上进行开发。 这种换器的主要目的是将C语言的语法和结构换成Java语言的等效代码。它通过识别C语言的特定语法特征,并将其换成Java语言对应的语法结构。例如,将C语言中的指针换成Java中的引用;将C语言中的结构体(struct)换成Java中的类;将C语言中的函数换成Java中的方法等等。 换器的实现涉及到对C语言代码的分析和语法解析。首先,它会对C语言代码进行词法分析和语法分析,将其换成抽象语法树(Abstract Syntax Tree,简称AST)。然后,它会对AST进行遍历和换,将C语言的结构和语法换成Java语言对应的结构和语法。最后,它会生成Java语言的源代码文件,供开发人员使用。 C语言Java换器的优点是可以节省大量的时间和人力成本。对于已经存在的C语言项目,使用换器可以避免重写整个项目的问题。它可以快速将C语言代码换为Java语言,从而实现在Java平台上继续项目的开发和维护。 然而,值得注意的是,C语言Java语言之间存在一些差异。C语言是面向过程的编程语言,而Java是面向对象的编程语言。因此,在换过程中,一些特定的C语言特性和语法可能无法完全换成Java语言。此外,C语言Java语言都有自己的标准库和函数库,换器可能需要对相关的库进行兼容性处理。 总的来说,C语言Java换器是一个方便的工具,可以帮助开发人员将C语言项目迁移到Java平台上,节省时间和成本。然而,在使用换器时,需要注意C语言Java语言之间的差异,以及对相关库的处理。 ### 回答2: C语言Java换器是一种用于将C语言代码换为Java代码的工具。它能够自动将C语言中的各种语法和结构换为Java语言对应的形式。 这个换器的作用是帮助开发者将已有的C语言代码换为可以在Java平台上运行的代码。它可以减少开发者重新编写代码的工作量,并且提高了代码的可维护性。 换器的实现过程中,首先会对C语言代码进行解析和分析,识别出其中的各种语法和结构。然后根据换规则,将C语言代码化为对应的Java代码换过程中,一些基本的语法和结构可以直接换,而一些复杂的语法和结构则需要通过算法进行深层次的分析和换。 换器的效果和准确性取决于其对C语言Java语言的语法和规则的理解程度。较为简单的C语言代码可以比较容易地换为Java代码,但是对于一些复杂的C语言代码换过程可能会更加复杂。 C语言Java换器是一个有益的工具,可以提高代码的重用性和跨平台的适应性。它能够帮助开发者将原本只能在C语言平台上运行的代码换为可以在Java平台上运行的代码,从而扩大了代码的应用范围。 然而,换器也有一些局限性。由于C语言Java语言之间存在一些差异,部分C语言代码可能无法完全换为等价的Java代码。在使用换器的过程中,开发者需要进行一些手工修正和调整,以确保换后的代码能够正确地运行。 ### 回答3: C语言Java换器是一个用于将C语言代码换成Java代码的工具。它可以帮助开发人员快速将现有的C语言项目迁移到Java平台上。 这个换器的主要功能是将C语言的语法和结构化为等效的Java语法和结构。它可以检测C语言代码中的关键字、数据类型、函数等元素,并将其对应换为Java中的等效元素。除了基本的语法换,换器还可以处理C语言特有的功能,如指针、内存管理等。 C语言Java语言在语法和编程范式上存在一些差异,因此在换过程中需要进行一些修改和调整。换器会自动进行这些调整,以确保换后的Java代码能够正常运行并与现有Java项目兼容。 然而,由于C语言Java语言之间的差异较大,完全自动化的换是不可能的。一些复杂的功能和特性可能无法完全换,因此开发人员在进行换后需要手动检查和调整。此外,换器也无法识别和换与语言无关的库或特定于平台的代码。 综上所述,C语言Java换器是一个有用的工具,可以帮助开发人员快速迁移现有的C语言项目到Java平台上。但是,由于语言差异和特定功能的限制,手动调整和检查是必要的,以确保换后的Java代码的正确性和稳定性。