依然在温习两个月之前写的程序
直接插入排序,还是那样,主要把算法模型搞清楚
模型在这里时间复杂度是O(n
2)
之前写的代码看起来很不舒服啊,以后要重新整理一下,主要是输入和不要界定输入个数
-
#include<stdio.h>
-
-
/*********************************************************
-
一.这次错误找半天,是因为第二个循环在出bug了,姑且做个小规定
-
1,当有两个循环时候,且第二个循环要用到第一个循环的参数,
-
第二个循环是控制变量--,那么第一i就用1;第二个循环++,那么第一个就用0
-
-
-
二.该方法优点,将我的方法的两次判断合并一次了,但是感觉思路没我那个清晰
-
*******************************************************/
-
-
-
//5 nums from low to high
-
int *insertion_sort_v2(int *a)
-
-
{
-
int i, j, tmp;
-
int *p = a;
-
for(i = 0; i < 5-1 ; i++)
-
{
-
tmp = p[i+1];
-
printf("debug tmp = %d \n",tmp);
-
for(j = i; j+1 >0 && tmp < p[j]; j--)
-
{ p[j+1] = p[j];
-
printf("debug:p[%d] = %d\n", j, p[j]);
-
}
-
-
p[j] = tmp;
-
}
-
return p;
-
}
-
-
int main(int argc, char **argv)
-
{
-
int array[5] = {5, 3, 6, 1, 2};
-
int i;
-
int *result = NULL;
-
-
result = insertion_sort_v2(array);
-
-
for(i = 0; i < 5; i++)
-
printf("a[%d] = %d\n", i , result[i]);
-
-
while(1);
-
-
return 0;
-
}
阅读(1420) | 评论(0) | 转发(0) |