CC10A06 COMPUTACION I 23 de Junio del 2003

Anuncio
CC10A06
COMPUTACION I
23 de Junio del 2003
static void separarNegPos(int[] a, int n){
int i = 0;
for(int j=0; j<n; ++j){
if(a[j]<0){
swap(a, i, j);
++i;
}
}
}
static void ordenarXcols(String[] a, int posini, int posfin, int colini, int colfin){
int n = a.length;
//creamos un arreglo de ciertas columnas : sera nuestro patron de ordenacion
String[] aux = new String[n];
for(int i = posini; i<=posfin; ++i)
aux[i] = a[i].substring(colini, colfin+1);
//ordenamos el subconjunto [posini,posfin]
for(int i=posfin-1; i>posini; --i){
int iM = posini;
for(int j=posini; j<i; ++j)
if(aux[j].compareTo(aux[iM])<0)
iM = j;
//intercambiamos (en aux[], y paralelamente en a[])
String res = aux[iM];
String res_a = a[iM];
aux[iM] = aux[i];
a[iM] = a[i];
aux[i] = res;
a[i] = res_a;
}
}
static int quickMediana(int[] a, int n){
int[] aux = new int[n];
for(int i=0; i<n; ++i)
aux[i] = a[i];
quickSort(aux, 0, n-1);
return aux[n/2];
}
static void swap(int[]a, int i, int j){
int aux = a[i];
a[i] = a[j];
a[j] = aux;
}
static void quickSort (int arreglo[], int iMin, int iMax){
if (iMin >= iMax) return;
int k =
particionar(arreglo, iMin, iMax);
quickSort(arreglo, iMin, k-1);
quickSort(arreglo, k+1, iMax);
}
static int particionar (int a[], int iMin, int iMax){
int iPiv = iMin; int k = iMin;
for(int j=k+1; j<=iMax; ++j)
if (a[j] < a[iPiv] ){
++k;
swap(a, k, j);
}
swap(a, k, iPiv);
return k;
}
CC10A06
COMPUTACION I
23 de Junio del 2003
Documentos relacionados
Descargar