13 septiembre 2015

labagtmr

public class InsertSort {

public static void main(String args[])
{
int[] num = {9,5,7,8,1,4,2,3,6};
int[] num1 = {5,2,4,6,1,3};

int[] num2 = {1,2,3,4,5};

inSort(num2);



for(int i=0; i System.out.print(num2[i]+" ");


}

static void insertionSort(int num[])
{

 int i, j, key;
 int nc=0,ni=0;

 for (i = 1; i < num.length; i++)
 {
     System.out.println("||||| i="+i+"|||||");
         key = num[i];
         System.out.println("\tkey "+key+"="+num[i]+"");
         j = i;
       
         if(((j > 0) && (num[j-1] > key))==false)
         nc++;
         while ((j > 0) && (num[j-1] > key))
         {
       
 
         System.out.println("\t\t num["+j+"]="+num[j-1]);
         num[j] = num[j-1];
             j = j-1;
              ni++;
              nc++;
             
         if(((j > 0) && (num[j-1] > key))==false)
         nc++;
         }
         ni++;
         System.out.println("\t"+num[j]+"->"+key);
         num[j] = key;
       
 }


 System.out.println("intercambios -> "+ni);
 System.out.println("comparaciones-> "+nc);
}



static void inSort(int num[])
{
int key,i;

int nc=0,ni=0;

for(int j=1; j {

System.out.println("||||| j="+j+"|||||");
key=num[j];
System.out.println("\tkey "+key+"="+num[j]+"");
i=j-1;


       if(((i>=0) && (num[i])>key)==false)
         nc++;
while((i>=0) && (num[i])>key)
{

System.out.println("\t\t num["+(i+1)+"]="+num[i]);
num[i+1]=num[i];
i=i-1;
ni++;
           nc++;
         if(((i>=0) && (num[i])>key)==false && i==-1)
         nc++;
}

if(num[i+1]>key)
ni++;

       System.out.println("\t"+num[i+1]+"->"+key);
num[i+1]=key;

}

 System.out.println("intercambios -> "+ni);
 System.out.println("comparaciones-> "+nc);

}
}

07 septiembre 2015

fff

public class MergeS {

public static void main(String[] args) {
// TODO Auto-generated method stub

int[] num = {9,5,7,8,1,4,2,3,6};

mergeSort(num, 0, num.length - 1);

for(int i=0; i {
System.out.print(num[i]+" ");
}

System.out.println();
System.out.println(Integer.MAX_VALUE);

}

     static void mergeSort(int[] array, int p, int r){
        if(p < r){
            int q = (p + r) / 2;
            mergeSort(array, p, q);
            mergeSort(array, q + 1, r);
            merge(array, p, q, r);
        }
    }
   
     static void merge(int[] array, int p, int q, int r){
        int n1 = q - p + 1;
        int n2 = r - q;
        int[] left = new int[n1 + 1];
        int[] right = new int[n2 + 1];

        for(int i = 0; i < n1; i++){
            left[i] = array[p + i];
        }

        for(int j = 0; j < n2; j++){
            right[j] = array[q + j + 1];
        }

        left[n1] = Integer.MAX_VALUE; // null indicates infinity
        right[n2] = Integer.MAX_VALUE;

        for(int i = 0,  j = 0,  k = p; k <= r; k++){
            if(left[i] <= right[j]){
                array[k] = left[i++];
            }else{
                array[k] = right[j++];
            }
        }
    }


}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
void insertionSort(int numbers[], int array_size)
{
  int i, j, index;

  for (i = 1; i < array_size; i++)
  {
          index = numbers[i];
          j = i;
          while ((j > 0) && (numbers[j - 1] > index))
          {
                   numbers[j] = numbers[j - 1];
                   j = j - 1;
          }
          numbers[j] = index;
  }
}