void Ordena(unsigned int *v, unsigned int *u, int e, int d) { int i, j; Particao(v, u, e, d, &i, &j); if (e < j) Ordena(v, u, e, j); if (i < d) Ordena(v, u, i, d); }
void Ordena(int esq, int dir, TipoLista *Lista){ int i, j; Particao( esq, dir, &i, &j, Lista ); if( esq<j){ Ordena( esq, j, Lista); } if(i<dir){ Ordena(i, dir, Lista); } }
//Função Quicksort que ordena lista decrescentemente em relação à pontuação void QuickSort(TipoLista *Lista){ //Colocando índice nas células ColocaIndice(Lista); //Passando o ponteiro indicador da primeira celula com conteúdo ,e a ultima e também a lista Ordena(Lista->Primeiro->Prox,Lista->Ultimo,Lista); }
int main() { TItem *A; // Arranjo com registros a serem ordenados TChave k; // Maior chave encontrada no arranjo A int d; // Numero de digitos da maior chave k int n; // Numero de registros do arranjo A n = 5; scanf("%d", &n); A = (TItem*)malloc(n*sizeof(TItem)); // Implemente a entrada de dados aqui! int i; for ( i = 0; i < n; i++){ scanf("%d", &A[i].Chave); } k = maiorChave(A, n); // Use como parametro do CountingSort Ordena(A, n-1, k); // Ajuste o parametro do seu metodo aqui! imprime(A,n-1); return 0; }
//Função Ordena: ela é a responsável pelo gerenciamento da ordenação das partições da lista void Ordena(ApontadorLista Esquerda,ApontadorLista Direita,TipoLista *Lista){ ApontadorLista i,j; Particao(Esquerda,Direita,&i,&j,Lista); //Se o Indice do ApontadorLista Esquerda for menor que o indice do ApontadorLista J //significa que ainda falta ordenar uma parte da lista , será feita uma nova //particiao a ordenar if(Esquerda->Indice < j->Indice){ //A lista particionada será de Esquerda até J Ordena(Esquerda,j,Lista); } //Se o Indice do ApontadorLista i for menor que o indice do ApontadorLista Direita //significa que ainda falta ordenar uma parte da lista , será feita uma nova //particiao a ordenar if(i->Indice < Direita->Indice){ //A lista particionada será de i até Direita Ordena(i,Direita,Lista); } }
int main(){ TItem *A; int n; n = Carrega(&A); Ordena(A, n); Imprime(A,n); Libera(&A); return 0; }
int main (){ int a, b, aux; printf("\t\t\t\t\t\tºPor: Felipe Andrade %cº\n\n",184); printf("Digite 2 numeros inteiros: \n"); scanf("%d %d",&a,&b); printf("\nA = %d\nB = %d",a,b); Ordena(&a,&b); printf("\n\nA = %d\nB = %d\n\n",a,b); system("pause"); return 0; }
/*************** Programa Principal ***************/ int main(int argc, char **argv) { char **frases; int n;//Número de frases int i,j; //Contadores if (argv[1] == "-r") //Se -r for digitado como argumento, ordena inverso { printf("\nDigite o numero de elementos \n"); scanf("%d", &n); getchar(); frases = (char **) malloc (n*sizeof(char *)); printf("\nDigite uma frase por Linha - até 200 caracteres \n"); le(frases, n); OrdenaReverso(frases, n); } else { printf("\nDigite o numero de elementos \n"); scanf("%d", &n); getchar(); frases = (char **) malloc (n*sizeof(char *)); printf("\nDigite uma frase por linha - até 200 caracteres\n"); le(frases, n); Ordena(frases, n); } printf("\n Frases Ordenadas \n"); imprime(frases,n); /* Libera espaço alocado dinamicamente */ for (i=0; i<n; i++) { free(frases[i]); } free(frases); getchar(); return(0); }
int main(int argc, char **argv) { //Nomes dos arquivos char NomeArqEntrada[TAMMAXNOMEARQ]; char NomeArqSaida[TAMMAXNOMEARQ]; //Status se o programa vai gerar dados para análise ou não bool Analise = false; //Verifica se os parâmetros necessários foram passados para o programa checaEntrada(argc, argv, NomeArqEntrada, NomeArqSaida, &Analise); FILE *ArqEntrada = fopen(NomeArqEntrada, "r"); if (ArqEntrada == NULL) { printf("\n[ERRO] Problema ao abrir o arquivo de entrada\nVerifique se o arquivo passado como argumento realmente existe\n\n"); exit(1); } Ordena(ArqEntrada, NomeArqSaida, Analise); fclose(ArqEntrada); return 0; }
void QuickSort(Apontador * ponteiros, int *n, int tabelaAsc[256]){ Ordena(0, *n, ponteiros, tabelaAsc); }
void Ordena(int Esq, int Dir, Apontador * ponteiros, int tabelaAsc[256]){ int i, j; Particao(Esq, Dir, &i, &j, ponteiros, tabelaAsc); if (Esq < j) Ordena(Esq, j, ponteiros, tabelaAsc); if (i < Dir) Ordena(i, Dir, ponteiros, tabelaAsc); }
//============== Funções para o Quicksort ================================ void QuickSortLista(TipoLista *Lista, int tamanho){ Ordena( 1, tamanho, Lista); }
int main() { int i=0; int InfoInserir; int x, op=-1, valor; deque *d; system("cls"); d=(deque*)malloc(sizeof(deque)); inicializaDeque(d); while(op != 0) { system("pause"); system("cls"); printf("\n\n DEQUE \n\n"); printf("( 1 ) Insere pela Direita.\n"); printf("( 2 ) Insere pela Esquerda.\n"); printf("( 3 ) Remove pela Direita. \n"); printf("( 4 ) Remove pela Esquerda.\n"); printf("( 5 ) Exibe.\n"); printf("( 6 ) Busca. \n"); printf("( 7 ) Organiza. \n"); printf("( 8 ) Limpa Tudo. \n"); printf("\nTempo na Busca: %f\n", tempoB/CLOCKS_PER_SEC); printf("Tempo no Organizar: %f\n", tempoO/CLOCKS_PER_SEC); printf("\nInforme a operacao: "); scanf("%d", &op); switch(op) { case 1: { printf("Diga quantos valores deseja inserir pela Direita <-: "); scanf("%d", &InfoInserir); for(i=InfoInserir; i>0; i--) InsereFrent(d,i); break; } case 2: { printf("Diga quantos valores deseja inserir pela Esquerda ->: "); scanf("%d", &InfoInserir); for(i=0; i<InfoInserir; i++) InsereFund(d,i); break; } case 3: { if(taVazio(d)) RetiraFrent(d); break; } case 4: { if(taVazio(d)) RetiraFund(d); break; } case 5: { printDeque(d); break; } case 6: { printf("Informe valor para busca :"); scanf("%d", &valor); Busca(d,valor); break; } case 7: { Ordena(d); break; } case 8: { ApagaTudo(d); break; } default: { printf("\nErro: Opcao invalida! Informe novamente.\n"); } } } system("pause"); return 0; }
void Quicksort(unsigned int *v, unsigned int *u, int tam) { Ordena(v, u, 0, tam - 1); }