{ "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 " } }