1排序算法、2输出素数(2018-9-4)

secction 1 排序算法

以下算法输出结果均为从小到大排序。

直接插入排序

com.sxy.insertSort
//直接插入排序
public class SortTest{
    public static void sort(int[] a){
        if(a==null&&a.length==0){
            return;
        }
        int len=a.length;
        for(int i=1;i<len;i++){//第一个数不用插入,从第二个数开始,进行比较、插入
            int temp=a[i];//保存每趟中待插入(待排序)的关键字大小
            int j=i;//
            for(;j>0&&temp<a[j-1];--j) {//重点。temp,不能写成a[i]
                a[j] = a[j-1];//涉及多次移位
            }
            a[j]=temp;
          }
        }
    public static void main(String[] args){
        int[] arr={6,2,3,4,5,1};
        sort(arr);
        for(int i:arr)
        System.out.print(i+" ");
    }
}

冒泡排序

com.sxy.bubbleSort
//冒泡排序
public class SortTest {
    public static void sort(int[] a) {
        if(a==null&&a.length==0){
            return;
        }
        int len = a.length;
        int temp;
        for (int i = 0; i < len - 1; i++) {//n-1趟排序
            for (int j = 0; j < len - i - 1; j++) {
                if (a[j] > a[j + 1]) {//两两比较,相邻的两个比较
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    }
    public static void main(String[] args) {
        int[] arr = {6, 5, 2, 3, 4, 1};
        System.out.println("after sort:");
        sort(arr);
        //int i;//
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}

简单选择排序

com.sxy.selectionSort
//选择排序
import java.util.Arrays;
public class SortTest{
    public static void sort(int[] a){
        if(a==null&&a.length==0){
            return;
        }
        int n=a.length;
        int temp;
        for(int i=0;i<n-1;i++){//n-1趟排序
            int min=i;//min记录关键字最小的下标
            for(int j=i+1;j<n;j++){
                if(a[j]<a[min]){//和每趟关键字最小的那个比
                   min=j;
                }
            }
            if(min!=i){
              temp=a[min];
              a[min]=a[i];
              a[i]=temp;
            }
        }
    }
    public static void main(String[] ars){
        int[] arr={6,5,2,3,4,1};
        System.out.println("after sort:");
        sort(arr);
        /*for(int i:arr){
            System.out.print(i+" ");
        }*/
        System.out.print(Arrays.toString(arr));
    }
}

secction 2 输出素数

Java算法题1:判断101-200之间有多少个素数,并输出所有素数。
https://www.cnblogs.com/gr-18219616915/p/5492484.html

public class SuShuTest {
         public static void main(String[] args)
            {
                     //for循环遍历101-200
                    int num=0;
                    for(int i = 101; i <= 200; i++)
                        {
                            boolean b = false;
                //内层循环判断i是否为素数
                           for(int j = 2; j <= i-1; j++)
                                {
                                    //除了1和它本身以外,如果i可以整除其他数就b = false
                                    if( i % j == 0 )
                                       {
                                            b = false;break;
                                       }
                                    //如果不能整除就b = true
                                    else {
                                            b = true;
                                         }
                                 }
                           //如果b = true就打印出来
                           if(b == true) {
                                    System.out.println(i);
                                    //num++;
                                 }
                        }
                    //System.out.println("101~200的素数个数为:"+num);
            }
        }

com.sxy.test1;
public class SuShuTest {
    public static void main(String[] args)
    {
        boolean flag=false;//标志,初始值的设定也很关键
        int num=0;
        for(int i = 101; i <= 200; i++) {//for循环遍历101~200
            for(int j = 2; j <= i-1; j++) {
                if( i % j == 0 ) {
                    flag=false;break;//
                }
                else{
                    flag=true;//
                }
            }
            if(flag==true){//
                System.out.println(i);
                num++;
            }
        }
        System.out.println("101~200的素数个数为:"+num);
    }
}
com.sxy.test2;
public class SuShuTest {
    public static void main(String[] args)
    {
        //for循环遍历101-200
        boolean flag=true;//标志,初始值的设定也很关键
        int num=0;
        for(int i = 101; i <= 200; i++) {
            for(int j = 2; j <= i-1; j++) {//j <= i-1;范围取大了,应为j<=i/2
                if( i % j == 0 ) {
                    flag=true;break;//
                }
                else{
                    flag=false;//
                }
            }
            if(flag==false){//
                System.out.println(i);
                num++;
            }
        }
        System.out.println("101~200的素数个数为:"+num);
    }
}

Java算法题2:判断1-100之间有多少个素数,并输出所有素数。

com.sxy.test3;
public class SuShuTest {
    public static void main(String[] args)
    {
        int i,n,j,b;//n用来存储素数的个数,b是一个标志,b=0表示被某个数整除,b=1表示不能被某个数整除。
        //i被除数、j除数
        for ( i=2,n=0;i<=100;i++ ) {//求1~100以内的素数
            for ( j=2,b=1;j<=i/2;j++ )//b=1初始值,假定i不会被某个数整除。b=1表示不能被某个数整除
                //j<=i/2是关键
                if ( i%j==0 ) {
                    b=0; break;//一旦可以被某个数整除,那么就将b置为0。
                }
            if (b==1) {
                n++;
                System.out.println(i);
            }
        }
        System.out.println("1~200的素数个数为:"+n);
    }
}
com.sxy.test4;
public class SuShuTest{
    public static void main(String[] args){
        boolean flag=false;/////////////////////
        int num=0;
        for(int i=2;i<=100;i++){//求1~100以内的素数
            for(int j=2;j<=i/2;j++){
                if(i%j==0){///////////////////////////
                    flag=true;
                    break;
                }
                else{
                    flag=false;
                }
            }
            if(flag==false){
                num++;
                System.out.println(i);
            }
        }
        System.out.println("素数的个数:"+num);
    }
}
com.sxy.test5;
public class SuShuTest{
    public static void main(String[] args){
        boolean flag=true;//
        int num=0;
        for(int i=2;i<=100;i++){//求1~100以内的素数
            for(int j=2;j<=i/2;j++){
                if(i%j!=0){////////////////////////////////
                    flag=true;
                }
                else{
                    flag=false;  break;
                }
            }
            if(flag==true){
                num++;
                System.out.println(i);
            }
        }
        System.out.println("素数的个数:"+num);
    }
}

Java算法题1:判断101-200之间有多少个素数,并输出所有素数。 (补充)

com.sxy.test6;
public class SuShuTest {
    public static void main(String[] args)
    {
        boolean flag=true;//标志,初始值的设定也很关键;
        //因为2是质数,所以这里的flag和下文中的if(flag==true)一致
        //如果这里的初始值是false,那么运行结果输出的素数没有2
        int num=0;
        for(int i = 2; i <= 100; i++) {//for循环遍历101~200
            for(int j = 2; j <= i-1; j++) {
                if( i % j == 0 ) {
                    flag=false;break;//
                }
                else{
                    flag=true;//
                }
            }
            if(flag==true){//
                System.out.println(i);
                num++;
            }
        }
        System.out.println("101~200的素数个数为:"+num);
    }
}

猜你喜欢

转载自blog.csdn.net/AriesTina/article/details/82380463