kickstart.nvim/snippets/sorting.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 "
}
}