编辑代码

#include <iostream>

using namespace std ;

void findMinMax(int arr[], int len, int& min, int& max) {
	min = arr[0];
	max = arr[0];

	for(int i=1; i < len; ++i) {
		if (arr[i] < min) {
			min = arr[i];
		}
		else if (arr[i] > max) {
			max = arr[i];
		}
	}
}

void lineCountSort(int arr[], int len, int orderedArr[]) {
	int min, max;
	findMinMax(arr, len, min, max);
	int countLen = max - min + 1;

	int *count = new int[countLen]();

	for (int i = 0; i < len; ++i)
	     ++count[arr[i] - min];

	for (int i = 1; i < countLen; ++i )
		count[i] = count[i] + count[i-1];

	for (int i = len-1; i >= 0; --i)
		orderedArr[--count[arr[i] - min]] = arr[i];
}

void printArray(int* arr, int len) {
	for (int i = 0; i < len; ++i) {
		cout << arr[i] << " ";
	}
	cout << endl;
}

int main() {
	int arr0[] = {60, 30, 80, 90, 10, 40};
	int orderedArr[10];
	printArray(arr0, 6);
	lineCountSort(arr0, 6, orderedArr);
	printArray(orderedArr, 6);

	int arr1[] = {62, 42, 82, 92, 62, 42, 92, 92};
	printArray(arr1, 8);
	lineCountSort(arr1, 8, orderedArr);
	printArray(orderedArr, 8);

	int arr2[] = {0};
	printArray(arr2, 1);
	lineCountSort(arr2, 1, orderedArr);
	printArray(orderedArr, 1);

	int arr3[] = {};
	printArray(arr3, 0);
	lineCountSort(arr3, 0, orderedArr);
	printArray(orderedArr, 0);

	int arr4[] = {10, 9, 8};
	printArray(arr4, 3);
	lineCountSort(arr4, 3, orderedArr);
	printArray(orderedArr, 3);
	
	return 0;
}