Created
July 10, 2018 03:18
-
-
Save bossxomlut/c7a075fdebbd3de8a83ddb4cc5875429 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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