作业11总结

一、知识点总结:

1、冒泡排序:

#include<Stdio.h>
int main()
{
    int i,j,n,t,a[10],k;
    n=6;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<n;i++){
        for(j=0;j<n-1;j++){
            if(a[j]>a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
            printf("j=%d",j);
            for(k=0;k<n;k++)
                printf("%4d",a[k]);
            printf("
");            
        }            
            printf("第%d趟排序结果",i);
            for(k=0;k<n;k++)
                printf("%4d",a[k]);
            printf("
");
    }            
    printf("排序后结果:");
    for(i=0;i<n;i++) printf("%4d",a[i]);
    return 0;
}

※冒泡排序法效率不高,需要约二分之n的平方次比较。只适用于小的数组。

2、指针、数组和地址间的关系:
  (1)数组的基地址是在内存中存储数组的起始位置,是数组中第一个元素(下标为0的地址),因此数组名本身是一个地址即指针值。
  (2)在访问内存方面,指针和数组几乎是相同的。
    ①指针是以地址作为值得变量
    ②数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
  (3)p=a;等价于p=&a[0];
          p=a+1;等价于&a[1];
          *(a+i)等价于a[i]

3、选择排序:

#include<Stdio.h>
void xz(int x[],int n)
{
    int i,j,k,t;
    for(i=0;i<n;i++){
        k=i;
        for(j=i+1;j<n;j++)
            if(x[j]<x[i]) k=j;
        if(k!=i){
            t=x[k];
            x[k]=x[i];
            x[i]=t;            
        }
    }    
}
int main()
{
    int *p,i,j,a[10],k,n,temp;
    printf("Enter n:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    p=a;
    xz(p,n);
    printf("After sorted:");
    for(i=0;i<n;i++){
        printf("%5d",a[i]);
    }
    return 0;
}

二、遇到的问题:
这次作业的第三题没看懂,后来理解了后没理清思路,抽时间多尝试一下。

三、实验心得:
在现在学习中更注重了对以前知识的综合运用,在实验的同时也加强了前一段时间学习内容的记忆。现在上课的练习也多了,在课下也要继续努力。


          


    
    

            

原文地址:https://www.cnblogs.com/lang-langang/p/6140604.html