這是插入排序程序的摘錄。以下給出三個代碼片段,它們是相同功能的不同版本,並且應該給出相同的輸出;不幸的是,只有第二和第三代碼片段給出了預期的輸出。爲什麼代碼片段1的行爲不同?第一個代碼片段輸出與第二和第三代碼不同的可能原因是什麼?
int find_smallest_index(int get_array[],int size,int left_index) //1st
{
int index_of_smallest_value;
for(int right_index=left_index+1;right_index<size;right_index++)
{
if(get_array[right_index]<get_array[left_index])
{index_of_smallest_value=right_index;}
}
return index_of_smallest_value;
}
int find_smallest_index(int get_array[],int size,int left_index) //2nd
{
for(int right_index=left_index+1;right_index<size;right_index++)
{
if(get_array[right_index]<get_array[left_index])
{left_index=right_index;}
}
return left_index;
}
int find_smallest_index(int get_array[],int size,int left_index) //3rd
{ int index_of_smallest_value=left_index;
for(int right_index=left_index+1;right_index<size;right_index++)
{
if(get_array[right_index]<get_array[index_of_smallest_value])
{index_of_smallest_value=right_index;}
}
return index_of_smallest_value;
}
如果循環從不執行,則第一個示例會返回未初始化的結果。我的意思是,如果left_index + 1不小於size,index_of_smallest_value將不會被設置。 – drescherjm