编辑代码

#include <iostream>
using namespace std ;
void printArray(int* arr, int len);
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 < countLen; ++i) {
		count[i] = 0;
	} 
	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 arr[] = {62, 47, 84, 96, 62, 47, 96, 96};
	int orderedArr[8];
	
	printArray(arr, 8);
	lineCountSort(arr, 8, orderedArr);
	printArray(orderedArr, 8);
	
	return 0;
	
	
}