1. 100以内素数的个数:
在大于1的整数中,只能被1和这个数本身整除的数,如2、3、5、7、11。也叫质数。
public static void getPrime(){
int sum = 0;
_L:for (int i = 2;i<=100;i++) {
for(int j = 2;j<i;j++){
if(i%j==0){
continue _L;
}
}
sum++;
}
System.out.println("100以内素数的个数是:"+sum);
}
2.斐波那契数
1、1、2、3、5、8、13、21、
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
System.out.println(fibonacci(i));;
}
}
public static int fibonacci(int num){
if(num == 1 || num == 2){
return 1;
}else{
return fibonacci(num-2)+fibonacci(num-1);
}
}
3.两数交换
private static void swap(int[] a,int i,int j){
if(i == j){
return;
}
//a[i] = 0b10, a[j] = 0b11;
a[i] ^= a[j];
//a[i] = 0b01, a[j] = 0b11;
a[j] ^= a[i];
//a[i] = 0b01, a[j] = 0b10;
a[i] ^= a[j];
//a[i] = 0b11, a[j] = 0b10;
}
4.选择排序
前一个数与它后面的数依次进行比较,如果比它小,就进行交换。
private static void selectorSort(){
for (int i = 0; i < a.length; i++) {
int min = i;//减少交次数
for (int j = i+1; j < a.length; j++) {
if(a[min] > a[j]){
min = j;
}
}
if(min != i){
swap(a,i,min);
}
}
}
5.插入排序
指针所指的前面的数是已经排序好的,需要将i 与i+1 所指的数进行比较。
public void insertSort(int[] a){
int length=a.length;//数组长度,将这个提取出来是为了提高速度。
int insertNum;//要插入的数
for(int i=1;i<length;i++){//插入的次数
insertNum=a[i];//要插入的数
int j=i-1;//已经排序好的序列元素个数
while(j>=0&&a[j]>insertNum){//序列从后到前循环,将大于insertNum的数向后移动一格
a[j+1]=a[j];//元素移动一格
j--;
}
a[j+1]=insertNum;//将需要插入的数放在要插入的位置。
}
}
6.冒泡排序
从后往前进行排序,相邻的两数之间进行比较,若[j]>[j+1]就行交换。
private static void bubbleSort(){
for (int i = a.length - 1; i > 0; i--) {
for(int j = 0;j<i;j++){
if(a[j]>a[j+1]){
swap(a,j,j+1);
}
}
}
}
或
public void bubbleSort(int[] a){
int length=a.length;
int temp;
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
7.快速排序
指针所指的数左边是小于该数的,右边是大于该数的。
private static int a[] = new int[]{10,85,32,14,1,23,58,8};
private static Random random;
public static void main(String[] args) {
random = new Random();
qsort(0,a.length - 1);
}
private static void qsort(int start,int end){
if(start>= end){
return;
}
int index = random.nextInt(end - start +1) + start;
swap(a,index,end);
index = start;
for(int i = start;i<end;i++){
if(a[i]<a[end]){
swap(a,index,i);
index++;
}
}
swap(a,index,end);
qsort(start, index);
qsort(index+1,end);
}