Quick actions

cmd+k|ctrl+k

Navigation

Languages

Quick search / Bubble sort

Snippet info

Language

C

Visibility

public

Author

rodrigogons

Created

2017-09-18T01:31:46Z

Updated

2017-09-22T15:06:46Z

#include <stdio.h>

// For the quick search works it needs that the list is sorted
// I choosed to use bubble sort, but you can use wich serves you better
void bubbleSort(int arr[], int size)
{
	int i, j, aux;

	for (i = 1; i < size; i++)
	{
		for (j = 0; j < size - i; j++)
		{
			if (arr[j] > arr[j + 1])       // if j+1 is lower then j goes to left
			{
				aux         = arr[j];
				arr[j]      = arr[j+1];
				arr[j+1]    = aux;
			}
		}
	}
}

int finder(int posi, int size, int arr[])
{
    int left = -1, middle, right = size;
    
    while(left < right - 1) 
    {
        middle = (left + right) / 2;
        
        if(arr[middle] < posi) left = middle;
        else right = middle;
    }
    
    return right;
}

int main()
{
    int i, val, find, TAM;
    printf("Tamanho da lista: ");
    scanf("%d", &TAM);
    printf("%d", TAM);
    
    int vetor[TAM];
    
    printf("\nvalores:\t\t");
    
    for(i = 0; i < TAM; i++)
    {
        scanf("%d", &val);
        vetor[i] = val;
        
        if(i == TAM - 1) printf("%d", vetor[i]);
        else printf("%d, ", vetor[i]);
    }
    
    printf("\n\nLista organizada:\t");
    bubbleSort(vetor, TAM);
    
    for(i = 0; i < TAM; i++)
    {
        if(i == TAM - 1) printf("%d", vetor[i]);
        else printf("%d, ", vetor[i]);
    }
    
    printf("\n\nPosição do valor: ");
    scanf("%d", &find);
    printf("%d", find);
    
    printf("\nIndice %d.", finder(find, TAM, vetor));
    
    return 0;
}
INFO