C++第四次实验-实验报告(1)

来源:互联网 发布:win7 64位优化版gho 编辑:程序博客网 时间:2024/05/04 03:01

一、问题及代码

/*    *文件名:0.cpp    *作者:张前咨    *完成日期:2017年4月10日    *版本号:5.11     *对任务及其完成方法的描述部分:    *输入描述:无    *问题描述:    【项目1:数组素数排序】   *程序输出:    *问题分析:略   *算法设计:略    */   #include <iostream>  using namespace std;  void sort(int p[], int n);  //数组排序  bool prime(int x);   //素数判断  void print(int p[],int n);//输出数组  int main( )     {   int a[10]={2,13,5,47,19,53,27,23,28,11};      int b[10],i,j=0;      for(i=0;i<10;i++)      {          if(prime(a[i]))b[j++]=a[i];//将a中的素数存入b数组      }      print(b,j); //输出排序前的b数组        sort(b,j);   //对数组b排序      print(b,j);   //输出排序后的b数组            return 0;  } bool prime(int x){if(x%2)//判断是否为奇数 {for(int i=3;i*i<=x;i+=2){if(!(x%i)){return false;}}return true;}elsereturn false; }  void sort(int p[],int n)//地精排序  { int i=0; int temp; while(i<n) { if(i==0||p[i-1]<=p[i]) i++; else{temp=p[i-1];p[i-1]=p[i];p[i]=temp;i--;} } } void print(int p[],int n) { for(int i=0;i<n;i++) { cout<<p[i]<<" "; }cout<<endl; }


二、运行结果



三、心得体会

1、判断素数与排序已经是写过很多遍的问题了,但是想不加思考的直接敲出来,还是有一点难度,还需继续练习。

2、在判断素数时使用了 x%2 的技巧,可以精简代码,但是可读性会比较低。

3、在排序时选用了地精排序,而没有选用更加快速的排序方法,因为这个问题不需要太高的时间复杂度,所以选择地精排序,精剪代码长度。


四、知识点总结

1、判断一个数是否为素数,只需要判定是否能被2整除,及x%2即可,x%2!=0 即为奇数,否则则为偶数。缩写即为x%2。

2、地精排序是冒泡排序的加强版,遇到比前面大的数字则交换位置,回退一步,重新判断,不断重复这个操作,直到排序完毕。

0 0
原创粉丝点击