|
8 | 8 | "Quick Sort" |
9 | 9 | ] |
10 | 10 | }, |
| 11 | + { |
| 12 | + "cell_type": "markdown", |
| 13 | + "metadata": {}, |
| 14 | + "source": [ |
| 15 | + "Quick sort with pivot as first index" |
| 16 | + ] |
| 17 | + }, |
11 | 18 | { |
12 | 19 | "cell_type": "code", |
13 | | - "execution_count": null, |
| 20 | + "execution_count": 35, |
14 | 21 | "metadata": {}, |
15 | | - "outputs": [], |
16 | | - "source": [] |
| 22 | + "outputs": [ |
| 23 | + { |
| 24 | + "name": "stdout", |
| 25 | + "output_type": "stream", |
| 26 | + "text": [ |
| 27 | + "[15, 10, 12, 20, 25, 13, 22]\n", |
| 28 | + "[15, 10, 12, 13, 25, 20, 22]\n", |
| 29 | + "[13, 10, 12, 15, 25, 20, 22]\n", |
| 30 | + "[12, 10, 13, 15, 25, 20, 22]\n", |
| 31 | + "[10, 12, 13, 15, 25, 20, 22]\n", |
| 32 | + "[10, 12, 13, 15, 22, 20, 25]\n", |
| 33 | + "[10, 12, 13, 15, 20, 22, 25]\n" |
| 34 | + ] |
| 35 | + } |
| 36 | + ], |
| 37 | + "source": [ |
| 38 | + "def quicksort1(S, low, high):\n", |
| 39 | + " if low < high:\n", |
| 40 | + " pivotpoint = partition1(S, low, high)\n", |
| 41 | + " quicksort1(S, low, pivotpoint - 1)\n", |
| 42 | + " quicksort1(S, pivotpoint + 1, high)\n", |
| 43 | + "\n", |
| 44 | + "def partition1(S, low, high):\n", |
| 45 | + " pivot = S[low]\n", |
| 46 | + " left, right = low + 1, high\n", |
| 47 | + " while left <= right:\n", |
| 48 | + " print(S)\n", |
| 49 | + " while left <= right and S[left] <= pivot:\n", |
| 50 | + " left += 1\n", |
| 51 | + " while left <= right and S[right] >= pivot:\n", |
| 52 | + " right -= 1\n", |
| 53 | + " if left < right:\n", |
| 54 | + " S[left], S[right] = S[right], S[left]\n", |
| 55 | + " S[low], S[right] = S[right], S[low]\n", |
| 56 | + " return right\n", |
| 57 | + "\n", |
| 58 | + "S = [15, 10, 12, 20, 25, 13, 22]\n", |
| 59 | + "quicksort1(S, 0, len(S) - 1)\n", |
| 60 | + "print(S)\n" |
| 61 | + ] |
| 62 | + }, |
| 63 | + { |
| 64 | + "cell_type": "markdown", |
| 65 | + "metadata": {}, |
| 66 | + "source": [ |
| 67 | + "Quiz sort with randomized pivot" |
| 68 | + ] |
| 69 | + }, |
| 70 | + { |
| 71 | + "cell_type": "code", |
| 72 | + "execution_count": 32, |
| 73 | + "metadata": {}, |
| 74 | + "outputs": [ |
| 75 | + { |
| 76 | + "name": "stdout", |
| 77 | + "output_type": "stream", |
| 78 | + "text": [ |
| 79 | + "[25, 22, 20, 15, 13, 12, 10] 0 6 pivot = 25\n", |
| 80 | + "[10, 22, 20, 15, 13, 12, 25] 0 5 pivot = 10\n", |
| 81 | + "[10, 22, 20, 15, 13, 12, 25] 1 5 pivot = 22\n", |
| 82 | + "[10, 12, 20, 15, 13, 22, 25] 1 4 pivot = 12\n", |
| 83 | + "[10, 12, 20, 15, 13, 22, 25] 2 4 pivot = 20\n", |
| 84 | + "[10, 12, 13, 15, 20, 22, 25] 2 3 pivot = 13\n", |
| 85 | + "[10, 12, 13, 15, 20, 22, 25]\n" |
| 86 | + ] |
| 87 | + } |
| 88 | + ], |
| 89 | + "source": [ |
| 90 | + "from random import randint\n", |
| 91 | + "\n", |
| 92 | + "def partition2(S, low, high):\n", |
| 93 | + " rand = randint(low, high)\n", |
| 94 | + " S[low], S[rand], S[rand], S[low]\n", |
| 95 | + " pivot, left, right = S[low], low, high\n", |
| 96 | + " print(S, left, right, \"pivot = \", pivot)\n", |
| 97 | + " while left < right:\n", |
| 98 | + " while left < high and S[left] <= pivot:\n", |
| 99 | + " left += 1\n", |
| 100 | + " while right > low and pivot <= S[right]:\n", |
| 101 | + " right -= 1\n", |
| 102 | + " if left < right:\n", |
| 103 | + " S[left], S[right] = S[right], S[right]\n", |
| 104 | + " S[low], S[right] = S[right], S[low]\n", |
| 105 | + " return right\n", |
| 106 | + "\n", |
| 107 | + "def quicksort2(S, low, high):\n", |
| 108 | + " if low < high:\n", |
| 109 | + " pivotpoint = partition2(S, low, high)\n", |
| 110 | + " quicksort2(S, low, pivotpoint - 1)\n", |
| 111 | + " quicksort2(S, pivotpoint + 1, high)\n", |
| 112 | + " \n", |
| 113 | + "S = [25, 22, 20, 15, 13, 12, 10]\n", |
| 114 | + "quicksort2(S, 0, len(S) - 1)\n", |
| 115 | + "print(S)\n" |
| 116 | + ] |
17 | 117 | }, |
18 | 118 | { |
19 | 119 | "cell_type": "code", |
|
24 | 124 | } |
25 | 125 | ], |
26 | 126 | "metadata": { |
| 127 | + "kernelspec": { |
| 128 | + "display_name": "Python 3", |
| 129 | + "language": "python", |
| 130 | + "name": "python3" |
| 131 | + }, |
27 | 132 | "language_info": { |
28 | | - "name": "python" |
| 133 | + "codemirror_mode": { |
| 134 | + "name": "ipython", |
| 135 | + "version": 3 |
| 136 | + }, |
| 137 | + "file_extension": ".py", |
| 138 | + "mimetype": "text/x-python", |
| 139 | + "name": "python", |
| 140 | + "nbconvert_exporter": "python", |
| 141 | + "pygments_lexer": "ipython3", |
| 142 | + "version": "3.12.3" |
29 | 143 | } |
30 | 144 | }, |
31 | 145 | "nbformat": 4, |
|
0 commit comments