有关插入排序的问题
#include <stdio.h>void print(int a[], int n ,int i)
{
printf("%d:",i);
int j;
for(j=0; j<8; j++){
printf("%d",a);
}
printf("\n");
}
void InsertSort(int a[], int n)
{
int i;
for(i= 1; i<n; i++)
{
if(a < a)
{
int j= i-1;
int x = a;
while(j>-1 && a < a) //为什么这里用 a,结果就会出错?
//用x替换a,结果才是正确的
{
a = a;
j--;
}
a = x;
}
print(a,n,i);
}
}
int main(){
int a = {3,1,7,5,2,4,9,6};
InsertSort(a,8);
return 0;
} 因为a其实有可能会因为排序的进行而变化,毕竟第一次排序时比较的数字是a和a,有可能立即进行交换,结果就是a变大了,之后的排序都会受到干扰 本帖最后由 jackz007 于 2020-12-25 21:44 编辑
#include <stdio.h>
void print(int a[] , int n)
{
int j ;
printf("%d" , a) ;
for(j = 1 ; j < n ; j ++) printf(" %d" , a) ;
printf("\n") ;
}
void InsertSort(int a[] , int n)
{
int i , j , t ;
for(i = 1 ; i < n ; i ++) {
for(j = i ; j && a < a ; j --) {
t = a ;
a = a ;
a = t ;
}
}
}
int main()
{
int a = {3 , 1 , 7 , 5 , 2 , 4 , 9 , 6} ;
InsertSort(a , 8) ;
print(a , 8) ;
}
页:
[1]