Beispiel #1
0
void Quick(int* data, int size){

	int pivot = data[0];
	int left = 0;
	int right = size;

	if(size < 2) return;

	while ( 1 ) {

		while ( data[++left] < pivot )
			; // blank

		while ( data[--right] > pivot )
			; // blank

		if ( left < right ){
			int temp = data[left];
			data[left] = data[right];
			data[right] = temp;	
		}else
			break;
	}
	
	int tmp = data[0];
	data[0] = data[right];
	data[right] = tmp;

	Quick(data, right);
	Quick(data+right+1, size-right-1); 

}
Beispiel #2
0
/* QuickSort, ordenar vetor*/
void Quick(int vet[FIM], int inicio, int fim){

   int pivo, aux, i, j, meio;

   i = inicio;
   j = fim;

   meio = (int) ((i + j) / 2);
   pivo = vet[meio];

   do{
      while (vet[i] < pivo) i = i + 1;
      while (vet[j] > pivo) j = j - 1;

      if(i <= j){
         aux = vet[i];
         vet[i] = vet[j];
         vet[j] = aux;
         i = i + 1;
         j = j - 1;
      }
   }while(j > i);

   if(inicio < j) Quick(vet, inicio, j);
   if(i < fim) Quick(vet, i, fim);
}
Beispiel #3
0
int main(){

	int n = 0;
	static int data[100000];

	scanf("%d", &n);

	while(n-->0){

		int count = 0;
		scanf("%d", &count);
		for(int i=0; i<count; i++){
			scanf("%d", &data[i]);
		}

		Quick(data, count);

		for ( int i = 0; i < count; i++ )
			printf("%d ", data[i]);
	printf("\n");

	}


	return 0;
}
Beispiel #4
0
int main(){
   
   int vetor[10] = {7, 9, 4, 3, 6, 1, 18, 2, 10, 5};
   
   int i;   
   printf("Vetor desordenado:\n");
   for(i = 0; i < 10; i++){
      printf("%d ", vetor[i]);
   }
   printf("\n");   
   
   Quick(vetor, 0, 9);
   
   printf("Vetor ordenado:\n");
   for(i = 0; i < 10; i++){
      printf("%d ", vetor[i]);
   }
   printf("\n");   
}
Beispiel #5
0
int main(){
    setlocale(LC_ALL, "Portuguese");
    int vet[FIM];

    //Inserir dados no vetor
    for (int i=0;i<FIM;++i){
        printf("Insira um numero: ");
        scanf("%d", &vet[i]);
    }

    //Ordena o vetor
    Quick(vet, INI, FIM - 1);

    //Mostra vetor Ordenado
    printf("\n\nVetor Ordenado: \n");
    for(int i=0;i<FIM;++i){
        printf("%d ", vet[i]);
    }

    return 0;
}
Beispiel #6
0
Datei: m.c Projekt: jucimarjr/pca
main(){
  //declaração de variáveis
  int nPos=0, nAux=0;
  int nInd=0, nAtual=0;
  int nTroca=0, nChave=0;
 
  //Quantidade de casas do vetor
  while((nPos<=0)||(nPos>100)){
    printf("\nQuantos numeros tera o vetor? ");
    scanf("%d",&nPos);
  }
 
  //criando o vetor
  int nVetor[nPos], nOrig[nPos], nOpc=-1;
 
  //preenchendo os dados do vetor
  for(nAux=0;nAux<=nPos-1;nAux++){
    printf("\nInsira o numero %d: ",nAux+1);
    scanf("%d",&nVetor[nAux]);
    nOrig[nAux]=nVetor[nAux];
  }
 
  limpa_tela; //limpando a tela
 
  while((nOpc<=0)||(nOpc>=3)){
    printf("\n > Menu:");
    printf("\n  1. Troca    | Bubble Sort");
     printf("\n  2. Referência  | QuickSort");
    printf("\n > Resposta: ");
    scanf("%d",&nOpc);
  }
 
  printf("\nOrdenando:\n");
  int i, j, t, m;
  if (nOpc==1){
    //bubble - troca
    nTroca = nPos - 1 ;
    for(nInd = 0; nInd < nPos; nInd++)
    {
      for(nAux=0;nAux<=nPos-1;nAux++){
        printf("[%d]",nVetor[nAux]);
      }
 
      for(nAtual = 0; nAtual < nTroca; nAtual++)
      {
        if(nVetor[nAtual] > nVetor[nAtual+1])
        {
          nAux = nVetor[nAtual];
          nVetor[nAtual] = nVetor[nAtual+1];
          nVetor[nAtual+1]=nAux;
        }
      }
      nTroca--;
      printf("\n");
    }
  }else{
	if(nOpc==2){ 
		Quick(nVetor,0,nPos);	
	}
     }
  //Resultado - Vetor Original
  printf("\nOriginal: ");
  for(nAux=0;nAux<=nPos-1;nAux++){
    printf("[%d]",nOrig[nAux]);
  }
 
  //Resultado - Vetor Ordenado
  printf("\nOrdenada: ");
  for(nAux=0;nAux<=nPos-1;nAux++){
    printf("[%d]",nVetor[nAux]);
  }
 
  //limpando os dados e esperando o usuario apertar -Enter-
  getchar();
  printf("\n\nPressione -Enter- para finalizar!\n\n");
  getchar();
}
Beispiel #7
0
int main(){
    setlocale(LC_ALL, "Portuguese");
    int vet[FIM],
        x,
        ini, meio, m1, m2, fim;

    //Inserir dados no vetor
    for (int i=0;i<FIM;++i){
        printf("Insira um numero: ");
        scanf("%d", &vet[i]);
    }

    //Ordena o vetor
    Quick(vet, INI, FIM - 1);

    //Mostra vetor Ordenado
    printf("\n\nVetor Ordenado: \n");
    for(int i=0;i<FIM;++i){
        printf("%d ", vet[i]);
    }

    //Solicita ao usuário para inserir um número
    printf("\n\nInforme um numero para achar a posicao: ");
    scanf("%d", &x);

    ini = 0;
    fim = FIM-1;

    //Inicio do método de busca binária
    do{
        if(ini > fim){
            printf("Número não encontrado.");
            break;
        }
        meio = (ini + fim)/2;
        m1 = (ini + meio)/2;
        m2 = (meio + fim)/2;

        if(x == vet[meio] || x == vet[m1] || x == vet[m2]){
            if(x == vet[meio]){
                printf("Encontrado na posição: %d", meio + 1);
                break;
            }else if(x == vet[m1]){
                printf("Encontrado na posição: %d", m1 + 1);
                break;
            }else{
                printf("Encontrado na posição: %d", m2 + 1);
                break;
            }
        }
        else if(x < vet[m1]){
                fim = m1-1;
             }else
             if(x > vet[m1] && x < vet[meio]){
                ini = m1+1;
                fim = meio-1;
             }else
             if(x>vet[meio] && x < vet[m2]){
                ini = meio+1;
                fim = m2-1;
             }else
             if(x > vet[m2]){
                ini = m2+1;
             }
    }while(1);

    return 0;
}