#include <stdio.h> #include <time.h> int arrI[3000]; void randomArray (int index) { for (int i=0;i<index;i++) { } return; } void ShellSortChar (char arr[], int index) { int help, j, porownan=0, zmian=0; char x, a[5]; a[0]=9; a[1]=5; a[2]=3; a[3]=2; a[4]=1; for(int k=0;k<5;k++) { help=a[k]; for(int i=help;i<index;++i) { x=arr[i]; porownan++; for(j=i-help;(x<arr[j]) && (k>=0);j=j-help) { arr[j+help] = arr[j]; zmian++; } arr[j+help] = x; } } return; } void ShellSortInt (int arr[], int index) { int help, j, porownan=0, zmian=0; int x, a[6]; a[0]=1; a[1]=7; a[2]=1; a[3]=48; a[4]=191; a[5]=514; for(int k=0;k<6;k++) { help=a[k]; for(int i=help;i<index;++i) { x=arr[i]; porownan++; for(j=i-help;(x<arr[j]) && (k>=0);j=j-help) { arr[j+help] = arr[j]; zmian++; } arr[j+help] = x; } } return; } void ShellSortIntAlt (int arr[], int index) { int help, j, porownan=0, zmian=0; int x, a[3000]; a[0]=5; for(int i=1;i<index;i++){ a[i]=4*a[i-1]+2; } for(int k=0;k<6;k++) { help=a[k]; for(int i=help;i<index;++i) { x=arr[i]; porownan++; for(j=i-help;(x<arr[j]) && (k>=0);j=j-help) { arr[j+help] = arr[j]; zmian++; } arr[j+help] = x; } } return; } void sortB (int arr1[], int index1) { int porownan=0, zmian = 0, swap; for(int i=0;i<=index1;i++){ for(int j=index1;j>=i+1;j--){ porownan++; if(arr1[j]<arr1[j-1]){ swap = arr1[j-1]; arr1[j-1]=arr1[j]; arr1[j]=swap; zmian++; } } } return; } int main() { int length = 12; /*char arr[12][1] = {"E","A","S","Y","Q","U","E","S","T","I","O","N"}; for(int i=0;i<length;i++){ printf("%c", *arr[i]); } printf("\n"); ShellSortChar(arr, length); printf("\n"); for(int i=0;i<length;i++){ printf("%c", *arr[i]); } printf("\n"); length = 200; randomArray(length); for(int i=0;i<length;i++) { printf("%d, ", arrI[i]); } printf("\n"); ShellSortInt(arrI, length); printf("\n"); for(int i=0;i<length;i++) { printf("%d, ", arrI[i]); } printf("\n");*/ for(int i=100;i<=3000;i+=100) { randomArray(i); ShellSortIntAlt(arrI, i); } for(int i=100;i<=3000;i+=100) { randomArray(i); ShellSortInt(arrI, i); } for(int i=100;i<=3000;i+=100) { randomArray(i); sortB(arrI, i); } }