首页 > 代码库 > 判断一个数是否是素数
判断一个数是否是素数
一、判断一个数是否是素数 思想:拿比自己小的整数依次进行比较 public String isSu(int a){ for(int i = 2 ; i<a; i++) { if(a%i == 0){ return "不是"; } } return "是"; }//算法改进;只要小于该数字的二次根就可以了,因为大于该数字的二次根的数字也是不能整除的 public String isSu(int a){ for(int i = 2 ; i<Math.sqrt(a); i++) { if(a%i == 0){ return "不是"; } } return "是"; } |
二、实现一个冒泡排序的算法 //思想:依次比较相邻两个数的大小,大数放在后面,小数放在前面,直至比较最后两个数,将小数放在前面,大数放在后面,重复以上过程 public void sort(int []array){ for(int i=0;i<array.length;i++){ for (int j=0;j<array.length-i-1;j++){ if(array[j]>array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } }平均时间复杂度为O(n2) 最好时间复杂度为O(n) |
三、插入排序算法(用于少量数据时候) //思想:在一个已经排序好的序列中插入一个数据 private static int[] insertSort(int[] array) { for (int i = 1; i < array.length; i++) { int temp = array[i]; for (int j = i - 1; j >= 0 && temp < array[j]; j--) { array[j + 1] = array[j]; array[j] = temp; } } return array; }平均时间复杂度为O(n2) 最好时间复杂度为O(n) |
四、快速插入排序(效率较高) 快速排序思想: 一趟快速排序是: 1,随机产生一数列,选取第一个数(这里也可选其他的数)作为比较的基石,假设这个数为X,这样X=A[0];设两个变量i=0,j=n-1;n是这个数列的长度 2,从前面开始找,找到第一个比A[0]大的数,找到了就与X交换 3,从后面开始找,找到第一个比A[0]小的数,找到了就与X交换 4,重复步骤2,3,直到i=j; 这样一趟快速排序就完成了;第一趟完成之后,X左边的数就全部小于X了,X右边的数九全部大于X,然后采用递归方式对X左边的数和X右边的数进行快速排序。 /** * @param pData 需要排序的数组 * @param left 左边的位置,初始值为0 * @param right 右边的位置,初始值为数组长度 */ public static void QuickSort(int[] pData,int left,int right) { int i,j; int first,temp; i = left; j = right; first = pData[left]; //这里选其他的数也行,不过一般选第一个 //一趟快速排序 while(true) { //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数 while((++i)<right-1 && pData[i]<first); //从最后一个数开始找第一个小于中枢pData[left]的数 while((--j)>left && pData[j]>first); if(i>=j) break; //交换两边找到的数 temp = pData[i]; pData[i] = pData[j]; pData[j] = temp; } //交换中枢 pData[left] = pData[j]; pData[j] = first; //递归快排中枢左边的数据 if(left<j) QuickSort(pData,left,j); //递归快排中枢右边的数据 if(right>i) QuickSort(pData,i,right); } |
来自为知笔记(Wiz)
判断一个数是否是素数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。