以下是十大排序算法的基本实现思路的简洁伪代码:\n\n1. 冒泡排序(Bubble Sort):\n\nfor i = 0 to n-1\n for j = 0 to n-i-1\n if arr[j] > arr[j+1]\n swap(arr[j], arr[j+1])\n\n\n2. 选择排序(Selection Sort):\n\nfor i = 0 to n-1\n minIndex = i\n for j = i+1 to n\n if arr[j] < arr[minIndex]\n minIndex = j\n swap(arr[i], arr[minIndex])\n\n\n3. 插入排序(Insertion Sort):\n\nfor i = 1 to n\n key = arr[i]\n j = i-1\n while j >= 0 and arr[j] > key\n arr[j+1] = arr[j]\n j = j-1\n arr[j+1] = key\n\n\n4. 希尔排序(Shell Sort):\n\ngap = n/2\nwhile gap > 0\n for i = gap to n-1\n temp = arr[i]\n j = i\n while j >= gap and arr[j-gap] > temp\n arr[j] = arr[j-gap]\n j = j-gap\n arr[j] = temp\n gap = gap/2\n\n\n5. 归并排序(Merge Sort):\n\nmergeSort(arr, left, right)\n if left < right\n mid = (left + right) / 2\n mergeSort(arr, left, mid)\n mergeSort(arr, mid+1, right)\n merge(arr, left, mid, right)\n\nmerge(arr, left, mid, right)\n n1 = mid - left + 1\n n2 = right - mid\n L[1..n1], R[1..n2] = arr[left..mid], arr[mid+1..right]\n i = 1, j = 1, k = left\n while i <= n1 and j <= n2\n if L[i] <= R[j]\n arr[k] = L[i]\n i = i+1\n else\n arr[k] = R[j]\n j = j+1\n k = k+1\n while i <= n1\n arr[k] = L[i]\n i = i+1, k = k+1\n while j <= n2\n arr[k] = R[j]\n j = j+1, k = k+1\n\n\n6. 快速排序(Quick Sort):\n\nquickSort(arr, low, high)\n if low < high\n pivot = partition(arr, low, high)\n quickSort(arr, low, pivot-1)\n quickSort(arr, pivot+1, high)\n\npartition(arr, low, high)\n pivot = arr[high]\n i = low-1\n for j = low to high-1\n if arr[j] <= pivot\n i = i+1\n swap(arr[i], arr[j])\n swap(arr[i+1], arr[high])\n return i+1\n\n\n7. 堆排序(Heap Sort):\n\nheapSort(arr)\n n = length(arr)\n for i = n/2-1 to 0\n heapify(arr, n, i)\n for i = n-1 to 1\n swap(arr[0], arr[i])\n heapify(arr, i, 0)\n\nheapify(arr, n, i)\n largest = i\n left = 2*i + 1\n right = 2*i + 2\n if left < n and arr[left] > arr[largest]\n largest = left\n if right < n and arr[right] > arr[largest]\n largest = right\n if largest != i\n swap(arr[i], arr[largest])\n heapify(arr, n, largest)\n\n\n8. 计数排序(Counting Sort):\n\ncountingSort(arr)\n max = findMax(arr)\n count = new Array(max+1)\n for i = 0 to max\n count[i] = 0\n for i = 0 to n-1\n count[arr[i]] = count[arr[i]] + 1\n for i = 1 to max\n count[i] = count[i] + count[i-1]\n output = new Array(n)\n for i = n-1 to 0\n output[count[arr[i]]-1] = arr[i]\n count[arr[i]] = count[arr[i]] - 1\n for i = 0 to n-1\n arr[i] = output[i]\n\n\n9. 桶排序(Bucket Sort):\n\nbucketSort(arr)\n n = length(arr)\n max = findMax(arr)\n bucketSize = max/n\n buckets = new Array(n)\n for i = 0 to n-1\n buckets[i] = new List()\n for i = 0 to n-1\n index = arr[i]/bucketSize\n insert(arr[i], buckets[index])\n k = 0\n for i = 0 to n-1\n sort(buckets[i])\n for j = 0 to length(buckets[i])-1\n arr[k] = buckets[i][j]\n k = k+1\n\n\n10. 基数排序(Radix Sort):\n\nradixSort(arr)\n max = findMax(arr)\n exp = 1\n while max/exp > 0\n countingSortByDigit(arr, exp)\n exp = exp * 10\n\ncountingSortByDigit(arr, exp)\n count = new Array(10)\n for i = 0 to 9\n count[i] = 0\n for i = 0 to n-1\n digit = (arr[i]/exp) % 10\n count[digit] = count[digit] + 1\n for i = 1 to 9\n count[i] = count[i] + count[i-1]\n output = new Array(n)\n for i = n-1 to 0\n digit = (arr[i]/exp) % 10\n output[count[digit]-1] = arr[i]\n count[digit] = count[digit] - 1\n for i = 0 to n-1\n arr[i] = output[i]\n\n

十大排序算法基本实现思路简洁伪代码讲解

原文地址: https://www.cveoy.top/t/topic/qvFc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录