Example #1
0
File: util.c Project: taiar/tp0
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);
}
Example #4
0
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);
	}
}
Example #6
0
int main(){
    TItem *A;
    int n;

    n = Carrega(&A);
    Ordena(A, n);
    Imprime(A,n);
    Libera(&A);

    return 0;
}
Example #7
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;
}
Example #8
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);
}
Example #9
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;
}
Example #14
0
File: util.c Project: taiar/tp0
void Quicksort(unsigned int *v, unsigned int *u, int tam)
{
  Ordena(v, u, 0, tam - 1);
}