Вобщем, вот тебе такая сортировка. Извиняй за, возможно, "неСишный" стиль - я на Си мало пишу.. Короче, вот код (можно компилить и запускать):
| Код | #include <stdio.h>
//собственно функция сортировки void InsertSort(int A[], int size){
int j; int TmpVal; for (int i=0; i<size; i++){ //ищем j - индекс в массиве, куда надо вставить элемент j = i; TmpVal = A[i]; //пока есть элементы, бОльшие, чем наш.. while ((j>0) && (TmpVal<A[j-1])){ //сдвигаем их вправо A[j] = A[j-1]; j--; }; //вставляем элемент в найденную позицию A[j] = TmpVal; }; return; };
void main(){ int n=10; //определим 10-элементный массив int* arr = new int[n]; //заполним его от большего к меньшему for (int i=0; i<n; i++){ arr[n-i-1] = i; };
printf("Before..\n"); for (int i=0; i<n; i++){ printf("%d ",arr[i]); };
//наша сортировка InsertSort(arr, n);
//смотрим, что получилось printf("\nAfter..\n"); for (int i=0; i<n; i++){ printf("%d ",arr[i]); };
delete[] arr; getchar(); return; } |
Все. Надеюсь, хоть чем-то помог.. |