前提
挿入ソートのcプログラムなのですが実行結果が0から始まる理由がわかりません。
よろしくお願いします。
発生している問題・エラーメッセージ
i: 0 1 2 3 4 5 6 7 8 9
a[i]: 21 32 8 11 23 66 31 72 0 92
i: 0 1 2 3 4 5 6 7 8 9
a[i]: 0 0 8 11 21 23 31 32 66 72
該当のソースコード
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int a[100];
void set_array(void);
void print_array(void);
void swap(int *x, int *y);
void set_array (void) { //100未満の乱数 N個生成して、配列にセット
int i;
srand((unsigned)time(NULL)); for(i = 0; i < N; i++) a[i] = rand()%100;
}
void print_array() { // 配列をプリント
int i;
printf(" i:"); for(i=0; i < N; i++) { printf("%3d ",i); } printf("\n"); printf("a[i]:"); for(i=0; i < N; i++) { printf("%3d ",a[i]); } printf("\n"); printf("\n");
}
void swap(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(void){
int i,j; set_array(); // N個乱数を配列にセット print_array(); // ソート前プリント for(i=1;i<=N;i++){//先頭から順にソート j=i; while(a[j-1]>a[j]){//配列済みは処理しない swap(&a[j-1],&a[j]);//整列されていない要素を交換 j--; } } /* a[]をソートする */ print_array(); // ソート後プリント return 0;
}
試したこと
数字を変えてみてもできませんでした