#include #include #include void swap(double *p, double *q); void directSort(double* a, int n); int main() { int n, i; double *a = NULL; while (true) { printf("n:\n"); if (scanf("%d", &n) < 1 || n <= 0) break; delete[] a; a = new double[n]; for (i = 0; i < n; ++i) { a[i] = (double)(rand() % 100); } for (i = 0; i < n; ++i) { printf("%5.1lf", a[i]); if ((i+1) % 10 == 0) printf("\n"); } printf("\n====\n"); directSort(a, n); printf("Sorted:\n"); for (i = 0; i < n; ++i) { printf("%5.1lf", a[i]); if ((i+1) % 10 == 0) printf("\n"); } printf("\n====\n"); } delete[] a; return 0; } void directSort(double* a, int n) { for (int i = 0; i < n-1; ++i) { int m = i; // index of minimal element for (int j = i+1; j < n; ++j) { if (a[j] < a[m]) { m = j; } } if (m != i) { swap(&(a[i]), &(a[m])); } } } void swap(double *p, double *q) { double tmp = *p; *p = *q; *q = tmp; }