Skip to content

Instantly share code, notes, and snippets.

@bossxomlut
Created July 10, 2018 03:18
Show Gist options
  • Select an option

  • Save bossxomlut/c7a075fdebbd3de8a83ddb4cc5875429 to your computer and use it in GitHub Desktop.

Select an option

Save bossxomlut/c7a075fdebbd3de8a83ddb4cc5875429 to your computer and use it in GitHub Desktop.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
bool CompareThan(char A[], char B[], char nA, char nB)
{
if (A[0] * B[0] < 0)
{
if (A[0]>0)
{
return true;
}
return false;
}
if (nA > nB)
{
if (A[0] > 0)
{
return true;
}
return false;
}
if (nA < nB)
{
if (A[0] < 0)
{
return true;
}
return false;
}
if (nA == nB)
{
char k = 0;
if (B[0] < 0)
{
if (A[0] > B[0])
{
return true;
}
else if (A[0] < B[0])
{
return false;
}
else
{
for (k = 1; k < nA; k++)
{
if (A[k]<B[k])
{
return true;
}
else if (A[k] > B[k])
{
return false;
}
}
}
return false;
}
else
{
for (k = 0; k < nA; k++)
{
if (A[k]>B[k])
{
return true;
}
else if (A[k] < B[k])
{
return false;
}
}
}
}
return false;
}
void Swap(char **&Arr, char *ArrLengthOfNumber, char i, char j)
{
char *C;
C = Arr[i];
Arr[i] = Arr[j];
Arr[j] = C;
char c;
c = ArrLengthOfNumber[i];
ArrLengthOfNumber[i] = ArrLengthOfNumber[j];
ArrLengthOfNumber[j] = c;
}
void BubbleSort(char **&Arr, unsigned int ElementNumber, char *&ArrLengthOfNumber, int &CountCompare)
{
unsigned int i, j;
for (i = 0; i < ElementNumber - 1; i++)
{
for (j = 0; j < ElementNumber - i - 1; j++)
{
if (CompareThan(Arr[j], Arr[j + 1], ArrLengthOfNumber[j], ArrLengthOfNumber[j + 1]))
{
Swap(Arr, ArrLengthOfNumber, j, j + 1);
}
}
}
}//Hàm thứ 2
void GetArrOfNumber(char **&Arr, unsigned int ElementNumber, char *&ArrLengthOfNumber)
{
unsigned int i;
char j;
Arr = (char **)malloc(ElementNumber*sizeof(char *)); //Cấp phát bộ nhớ
if (Arr == NULL)
{
printf("Error!!! NOT ENOGHT MEMORY!!!");
exit(1);
}
ArrLengthOfNumber = (char *)malloc(ElementNumber*sizeof(char));//Cấp phát bộ nhớ
for (i = 0; i < ElementNumber; i++)
{
ArrLengthOfNumber[i] = 15 + rand() % 5;
Arr[i] = (char *)malloc(ArrLengthOfNumber[i] * sizeof(char));
do
{
Arr[i][0] = rand()%9 - rand() % 9;// mới sữa
} while (Arr[i][0] == 0);
if (Arr[i] == NULL)
{
printf("Error!!! NOT ENOGHT MEMORY!!!");
exit(1);
}
for ((char)j = 1; j < ArrLengthOfNumber[i]; j++)
{
Arr[i][j] = rand() % 9;
}
}
}
void main()
{
int dem = 0;
srand((unsigned)time(NULL));
unsigned int i;
unsigned int j;
unsigned int ElementNumber = 20;
char **Arr = NULL;
char *ArrLengthOfNumber = NULL;
//////////////////////////////////////////
GetArrOfNumber(Arr, ElementNumber, ArrLengthOfNumber); //Tạo dãy số
/////////////////////////////////////////
BubbleSort(Arr, ElementNumber, ArrLengthOfNumber, dem); //Sort
/////////////////////////////////////////
printf("After Run Bubble Sort:\n");
for (i = 0; i < ElementNumber; i++) //In ra kết quả
{
for (j = 0; j < ArrLengthOfNumber[i]; j++)
{
printf("%d", Arr[i][j]);
}
printf("\n");
}
//////////////////////////////////////// Giải phóng :D
for (i = 0; i < ElementNumber; i++)
{
free(Arr[i]);
}
free(Arr);
printf("\nFinish !!!");
_getch();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment