mirror of
https://github.com/TheAlgorithms/C
synced 2024-11-25 06:49:36 +03:00
Optimizing the algorithm, and improving the array filling
This commit is contained in:
parent
7b302b48cd
commit
382f084834
61
BubbleSort.c
61
BubbleSort.c
@ -1,37 +1,40 @@
|
||||
/* ALGORITHM
|
||||
1. Start from left hand side
|
||||
2. Compare first two numbers
|
||||
3. If first_number > second_number than swap both number position. And if first_number < second_number than these compare next two numbers i.e. second_number and third_number.
|
||||
4. Step-3 process repeat until there are no more numbers left to compared.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include<conio.h>
|
||||
#include <stdlib.h>
|
||||
int main()
|
||||
{
|
||||
int i,j,temp,SIZE;
|
||||
printf("Enter number of elements to be sorted : ");
|
||||
scanf("%d",&SIZE);
|
||||
int *arr = (int*)malloc(SIZE*sizeof(int));
|
||||
for(i=0; i<SIZE; i++)
|
||||
{
|
||||
printf("Enter Number : ");
|
||||
scanf("%d",&arr[i]);
|
||||
|
||||
|
||||
int main(){
|
||||
|
||||
int* ARRAY=NULL;
|
||||
int ContinueFilling=1; //This is to know if we should continue filling our array
|
||||
int ARRAY_LENGTH=0,isSorted=0,i,TEMPORARY_ELEMENT;
|
||||
|
||||
//This code part is for filling our array
|
||||
while(ContinueFilling){
|
||||
printf("Enter the value number %d \n",ARRAY_LENGTH+1);
|
||||
ARRAY=(int *)realloc(ARRAY,sizeof(int)*(ARRAY_LENGTH));
|
||||
scanf("%d",&ARRAY[ARRAY_LENGTH]);
|
||||
ARRAY_LENGTH+=1;
|
||||
printf("would you enter an other value (1:Continue/0:Sort the actual array)?\n");
|
||||
scanf("%d",&ContinueFilling);
|
||||
}
|
||||
for(i=0; i<SIZE ; i++)
|
||||
{
|
||||
for(j=0; j<(SIZE-1)-i; j++)
|
||||
{
|
||||
if( arr[j] < arr[j+1] )
|
||||
{
|
||||
temp=arr[j];
|
||||
arr[j]=arr[j+1];
|
||||
arr[j+1]=temp;
|
||||
|
||||
//Then we sort it using Bubble Sort..
|
||||
|
||||
while(!isSorted){ //While our array's not sorted
|
||||
isSorted=1; //we suppose that it's sorted
|
||||
for(i=0;i<ARRAY_LENGTH-1;i++){ //then for each element of the array
|
||||
if(ARRAY[i]>ARRAY[i+1]){ // if the two elements aren't sorted
|
||||
isSorted=0; //it means that the array is not sorted
|
||||
TEMPORARY_ELEMENT=ARRAY[i]; //and we switch these elements using TEMPORARY_ELEMENT
|
||||
ARRAY[i]=ARRAY[i+1];
|
||||
ARRAY[i+1]=TEMPORARY_ELEMENT;
|
||||
}
|
||||
}
|
||||
printf("%d\t",arr[j]);
|
||||
}
|
||||
getch();
|
||||
//And we display it
|
||||
for(i=0;i<ARRAY_LENGTH;i++){
|
||||
printf("%d, ",ARRAY[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user