311 lines
8.4 KiB
JSON
311 lines
8.4 KiB
JSON
{
|
|
"Insertion Sort ": {
|
|
"prefix": "insort",
|
|
"body": [
|
|
"void swap(int *xp, int *yp)",
|
|
"{",
|
|
" int temp = *xp;",
|
|
" *xp = *yp;",
|
|
" *yp = temp;",
|
|
"}",
|
|
"",
|
|
"void insertionSort(int a[], int n)",
|
|
"{",
|
|
" int key;",
|
|
" for (int i = 1; i < n; i++)",
|
|
" {",
|
|
" key = a[i];",
|
|
" int j = i - 1;",
|
|
" while (j >= 0 && a[j] > key)",
|
|
" {",
|
|
" a[j + 1] = a[j];",
|
|
" j--;",
|
|
" }",
|
|
" a[j + 1] = key;",
|
|
" }",
|
|
"}",
|
|
"//int main()",
|
|
"//{",
|
|
" int n;",
|
|
" cin >> n;",
|
|
" int a[n];",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cin >> a[i];",
|
|
" }",
|
|
" insertionSort(a, n);",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cout << a[i] << \" \";",
|
|
" }",
|
|
"//return 0;",
|
|
"//}"
|
|
],
|
|
"description": "Insertion Sort "
|
|
},
|
|
"Bubble Sort ": {
|
|
"prefix": "bubsort",
|
|
"body": [
|
|
"void swap(int *xp, int *yp)",
|
|
"{",
|
|
" int temp = *xp;",
|
|
" *xp = *yp;",
|
|
" *yp = temp;",
|
|
"}",
|
|
"",
|
|
"void recurBubbleSort(int arr[], int n)",
|
|
"{",
|
|
" // Base case",
|
|
" if (n == 1)",
|
|
" return;",
|
|
"",
|
|
" // One pass of bubble sort. After",
|
|
" // this pass, the largest element",
|
|
" // is moved (or bubbled) to end.",
|
|
" for (int i = 0; i < n - 1; i++)",
|
|
" if (arr[i] > arr[i + 1])",
|
|
" swap(arr[i], arr[i + 1]);",
|
|
"",
|
|
" // Largest element is fixed,",
|
|
" // recur for remaining array",
|
|
" bubbleSort(arr, n - 1);",
|
|
"}",
|
|
"",
|
|
"void bubbleSort(int a[], int n)",
|
|
"{",
|
|
" for (int i = 0; i < n - 1; i++)",
|
|
" {",
|
|
" bool flag = false;",
|
|
" for (int j = 0; j < n - i - 1; j++)",
|
|
" {",
|
|
" if (a[j] > a[j + 1])",
|
|
" {",
|
|
" swap(&a[j], &a[j + 1]);",
|
|
" flag = true;",
|
|
" }",
|
|
" }",
|
|
" if (flag == false)",
|
|
" {",
|
|
" break;",
|
|
" }",
|
|
" }",
|
|
"}",
|
|
"int main()",
|
|
"{",
|
|
" int n;",
|
|
" cin >> n;",
|
|
" int a[n];",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cin >> a[i];",
|
|
" }",
|
|
" bubbleSort(a, n);",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cout << a[i] << \" \";",
|
|
" }",
|
|
" return 0;",
|
|
"}"
|
|
],
|
|
"description": "Bubble Sort "
|
|
},
|
|
"Selection Sort ": {
|
|
"prefix": "selsort",
|
|
"body": [
|
|
"void swap(int *xp, int *yp)",
|
|
"{",
|
|
" int temp = *xp;",
|
|
" *xp = *yp;",
|
|
" *yp = temp;",
|
|
"}",
|
|
"",
|
|
"void selectionSort(int a[], int n)",
|
|
"{",
|
|
" int min_idx;",
|
|
" for (int i = 0; i < n - 1; i++)",
|
|
" {",
|
|
" min_idx = i;",
|
|
" for (int j = i + 1; j < n; j++)",
|
|
" {",
|
|
" if (a[min_idx] > a[j])",
|
|
" {",
|
|
" min_idx = j;",
|
|
" }",
|
|
" }",
|
|
" swap(&a[min_idx], &a[i]);",
|
|
" }",
|
|
"}",
|
|
"int main()",
|
|
"{",
|
|
" int n;",
|
|
" cin >> n;",
|
|
" int a[n];",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cin >> a[i];",
|
|
" }",
|
|
" selectionSort(a, n);",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cout << a[i] << \" \";",
|
|
" }",
|
|
" return 0;",
|
|
"}"
|
|
],
|
|
"description": "Selection Sort "
|
|
},
|
|
"Merge Sort ": {
|
|
"prefix": "mersort",
|
|
"body": [
|
|
"void swap(int *xp, int *yp)",
|
|
"{",
|
|
" int temp = *xp;",
|
|
" *xp = *yp;",
|
|
" *yp = temp;",
|
|
"}",
|
|
"void merge(int array[], int const left, int const mid, int const right)",
|
|
"{",
|
|
" auto const subArrayOne = mid - left + 1;",
|
|
" auto const subArrayTwo = right - mid;",
|
|
"",
|
|
" // Create temp arrays",
|
|
" auto *leftArray = new int[subArrayOne],",
|
|
" *rightArray = new int[subArrayTwo];",
|
|
"",
|
|
" // Copy data to temp arrays leftArray[] and rightArray[]",
|
|
" for (auto i = 0; i < subArrayOne; i++)",
|
|
" leftArray[i] = array[left + i];",
|
|
" for (auto j = 0; j < subArrayTwo; j++)",
|
|
" rightArray[j] = array[mid + 1 + j];",
|
|
"",
|
|
" auto indexOfSubArrayOne = 0, // Initial index of first sub-array",
|
|
" indexOfSubArrayTwo = 0; // Initial index of second sub-array",
|
|
" int indexOfMergedArray = left; // Initial index of merged array",
|
|
"",
|
|
" // Merge the temp arrays back into array[left..right]",
|
|
" while (indexOfSubArrayOne < subArrayOne && indexOfSubArrayTwo < subArrayTwo)",
|
|
" {",
|
|
" if (leftArray[indexOfSubArrayOne] <= rightArray[indexOfSubArrayTwo])",
|
|
" {",
|
|
" array[indexOfMergedArray] = leftArray[indexOfSubArrayOne];",
|
|
" indexOfSubArrayOne++;",
|
|
" }",
|
|
" else",
|
|
" {",
|
|
" array[indexOfMergedArray] = rightArray[indexOfSubArrayTwo];",
|
|
" indexOfSubArrayTwo++;",
|
|
" }",
|
|
" indexOfMergedArray++;",
|
|
" }",
|
|
" // Copy the remaining elements of",
|
|
" // left[], if there are any",
|
|
" while (indexOfSubArrayOne < subArrayOne)",
|
|
" {",
|
|
" array[indexOfMergedArray] = leftArray[indexOfSubArrayOne];",
|
|
" indexOfSubArrayOne++;",
|
|
" indexOfMergedArray++;",
|
|
" }",
|
|
" // Copy the remaining elements of",
|
|
" // right[], if there are any",
|
|
" while (indexOfSubArrayTwo < subArrayTwo)",
|
|
" {",
|
|
" array[indexOfMergedArray] = rightArray[indexOfSubArrayTwo];",
|
|
" indexOfSubArrayTwo++;",
|
|
" indexOfMergedArray++;",
|
|
" }",
|
|
"}",
|
|
"",
|
|
"// begin is for left index and end is",
|
|
"// right index of the sub-array",
|
|
"// of arr to be sorted */",
|
|
"void mergeSort(int array[], int const begin, int const end)",
|
|
"{",
|
|
" if (begin >= end)",
|
|
" return; // Returns recursively",
|
|
"",
|
|
" auto mid = begin + (end - begin) / 2;",
|
|
" mergeSort(array, begin, mid);",
|
|
" mergeSort(array, mid + 1, end);",
|
|
" merge(array, begin, mid, end);",
|
|
"}",
|
|
"int main()",
|
|
"{",
|
|
" int n;",
|
|
" cin >> n;",
|
|
" int a[n];",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cin >> a[i];",
|
|
" }",
|
|
" mergeSort(a, 0, n - 1);",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cout << a[i] << \" \";",
|
|
" }",
|
|
" return 0;",
|
|
"}"
|
|
],
|
|
"description": "Merge Sort "
|
|
},
|
|
"Quick Sort ": {
|
|
"prefix": "qsort",
|
|
"body": [
|
|
"void swap(int *xp, int *yp)",
|
|
"{",
|
|
" int temp = *xp;",
|
|
" *xp = *yp;",
|
|
" *yp = temp;",
|
|
"}",
|
|
"int partition(int a[], int l, int h)",
|
|
"{",
|
|
" int i = l;",
|
|
" int j = h;",
|
|
" int pivot = a[l];",
|
|
" while (i < j)",
|
|
" {",
|
|
" do",
|
|
" {",
|
|
" i++;",
|
|
" } while (a[i] <= pivot);",
|
|
" do",
|
|
" {",
|
|
" j--;",
|
|
" } while (a[j] > pivot);",
|
|
" if (i < j)",
|
|
" {",
|
|
" swap(&a[i], &a[j]);",
|
|
" }",
|
|
" }",
|
|
" swap(&a[l], &a[j]);",
|
|
" return j;",
|
|
"}",
|
|
"void quickSort(int a[], int l, int h)",
|
|
"{",
|
|
" if (l < h)",
|
|
" {",
|
|
" int pi = partition(a, l, h);",
|
|
" quickSort(a, l, pi);",
|
|
" quickSort(a, pi + 1, h);",
|
|
" }",
|
|
"}",
|
|
"int main()",
|
|
"{",
|
|
" int n;",
|
|
" cin >> n;",
|
|
" int a[n];",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cin >> a[i];",
|
|
" }",
|
|
" quickSort(a, 0, n - 1);",
|
|
" for (int i = 0; i < n; i++)",
|
|
" {",
|
|
" cout << a[i] << \" \";",
|
|
" }",
|
|
" return 0;",
|
|
"}"
|
|
],
|
|
"description": "Quick Sort "
|
|
}
|
|
}
|