algortima dan struktur data sorting dengan insertion sort

berikut akan saya sharing tentang ilmu struktur data yaitu tentang metode sorting dengan insertion sort. dan berikut algoritma nya langsung saya cantumkan dalam code program.

Code Program Insertion

-----------------------------------------------------------------------------------------------------------------------------
#include"stdio.h"
#include"time.h"

#define max 100000

int key,n,data[max],temp[max];

void input(){
int i;
    printf("\nmasukan jumlah data: ");
    scanf("%d",&n);

        for(i=0;i<n;i++){
        //data[i]=rand()%100000;
        //printf("data ke %d= ",i+1);
        //scanf("%d",&data[i]);
        data[i]=i; //untuk data urut
        }
        for(i=0;i<n;i++){
            temp[i]=data[i];
        }
}

void print(){
    int k;
    puts("\n hasil setelah diurutkan\n");
        for(k=0;k<n;k++){
        printf("%d ",data[k]);}
}

void printtemp(){
    int k;
    puts("\n hasil setelah diurutkan\n");
        for(k=0;k<n;k++){
        printf("%d ",temp[k]);}
}

void insertion(){
    int i,j;char pil;long int t1,t2;
    printf("\t MENU \n");
    printf("urutkan \n 1.ascending\n 2.descending\n");
    fflush(stdin);
    printf("\n masukan pilihan anda: ");
    pil=getchar();
   
    //urut asscending
    if(pil=='1'){
        time(&t1);
        for(i=1;i<n;i++){
            j=i;
            key=data[i];//untuk tampung data dulu
            while((j>0)&&(data[j-1]>key)){
                data[j]=data[j-1];//untuk geser tempat
                j--;
            }
            data[j]=key;
           
        }
        time(&t2);
    //print();
    printf("\nwaktu= %ld s",t2-t1);
    }
    //urut desscending
    else if(pil=='2'){
        time(&t1);
        for(i=1;i<n;i++){
            j=i;
            key=temp[i];//untuk tampung data dulu   
            while((j>0)&&(temp[j-1]<key)){
                temp[j]=temp[j-1];//untuk geser tempat
                j--;
            }
            temp[j]=key;
        }
        time(&t2);
    printtemp();
    printf("\nwaktu= %ld s",t2-t1);
    }
}



main(){
    char jawab;

   
    do{    system("cls");//untuk membersihkan layar
    puts("\t PROGRAM INSERTION SORT");
    puts("\t by: achmad sayfudin\n");
        input();
        do{   
            insertion();
            //print();
           
            printf("\n\n apakah ingin mengurutkan lagi: ");
            fflush(stdin);
            jawab=getchar();
        }while(jawab=='y'||jawab=='Y');

        printf("\n apakah ingin input lagi(y/t): ");
        fflush(stdin);
        jawab=getchar();

    }while(jawab=='y'||jawab=='Y');
}

-------------------------------------------------------------------------------------------------------------------------
berikut code dari insertion sort.