1.32位位运算
package d0;
import java.util.Scanner;
public class Code1 {
public static void main(String[] args) {
int num=1023;
print(num);
int test=1;
print(test);
print(test<<1);
print(test<<2);
}
private static void print(int num) {
for (int i = 31; i >=0; i--) {
System.out.print((num&(1<<i))==0?"0":"1");
/*
& 1 1==1
左移一位=*2
*/
}
System.out.println();
}
}
2.阶乘相加
package d0;
public class Code2 {
public static void main(String[] args) {
int N=5;
System.out.println(f2(N));
}
public static long f2(int N) {
long ans =0;
long cur=1;
for (int i = 1; i <= N; i++) {
// 把上一回的阶乘保存
cur=cur*i;
ans=ans+cur;
}
return ans;
}
}
3.选择排序
package d0;
// 选择排序
public class Code3 {
// 0 N-1 找到最小值放在0上,直接搞过去
// 1 N-1找到最小值放在1上
// 2 N-1找到最小值放在2上
// N-1 N-1找到最小值放在N-1上
private static void selectSort(int[] arr) {
if(arr == null || arr.length<2)
{return;}
int N=arr.length;
for (int i = 0; i < N; i++) {
// 0 N-1 找到最小值放在0上
// 1 N-1找到最小值放在1上
// 2 N-1找到最小值放在2上
// N-1 N-1找到最小值放在N-1上
int min=i;
for (int j = i+1; j < N; j++) {
min=arr[j]<arr[min]?j:min;// 第二位比第一位小,就返回第二位,并赋值
}
swap(arr,i,min);
}
}
public static void swap(int[] arr,int i,int j){
int t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int []arr={10,20,30,40,50,680,12,62};
printArray(arr);
selectSort(arr);
printArray(arr);
}
}
4.冒泡排序
package d0;
// 冒泡排序
public class Code4 {
// 0-n-1 两两交换
//0-n-2 两两交换
//0-n-3 两两交换
private static void bubbleSort(int[] arr) {
if(arr == null || arr.length<2)
{return;}
int N=arr.length;
for (int end = N-1; end >=0; end--) {
// 0----end
//01 12 23 34 45
//second 是第二个01 的1
for (int second = 1; second <=end; second++) {
// 最开始是01 12 23 34 45 56
if(arr[second-1]>arr[second])// 前面一个数大的话,交换位置,等待第二趟排序,再来一次
{
swap(arr,second-1,second);
}
}
}
}
public static void swap(int[] arr,int i,int j){
int t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int []arr={10,20,30,40,50,680,12,62};
printArray(arr);
bubbleSort(arr);
printArray(arr);
}
}
5.插入排序
package d0;
public class Code5 {
//0-0 有序
//0-1 有序 1向前看,后面比前面小,就往前放
//0-2 有序 2向前看1,后面比前面小,就往前放
// 1向前看0,后面比前面小,就往前放
//0-3 有序
// 3向前看2,后面比前面小,就往前放
// 2向前看1,后面比前面小,就往前放
// 1向前看0,后面比前面小,就往前放
private static void insetSort(int[] arr) {
//0-0
//0-1
//0-2
//0-n-1
int N=arr.length;
for (int end = 1; end < N ; end++) {
int newNumIndex=end;// 我一开始来到N的位置
while(newNumIndex-1>=0 && arr[newNumIndex-1]>arr[newNumIndex])
//有数 前面的数字大于后面数字交换,3<5 结束
{
swap(arr,newNumIndex-1,newNumIndex);
newNumIndex--;
}
}
}
private static void insetSort2(int[] arr) {
//0-0
//0-1
//0-2
//0-n-1
if(arr == null || arr.length<2)
{return;}
int N=arr.length;
for (int end = 1; end < N ; end++) {
// pre 新数
// 6 7 当前7 pre=6 成立交换
// 5 6 当前6 pre=5 成立交换
for (int pre = end-1; pre >=0&&arr[pre]>arr[pre+1];pre--) {
swap(arr,pre,pre+1);
}
}
}
public static void swap(int[] arr,int i,int j){
int t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int []arr={1,4,5,2,4,1,2,6,8,5,4,6,3,8,6};
printArray(arr);
insetSort(arr);
printArray(arr);
System.out.println("=========2=========");
printArray(arr);
insetSort2(arr);
printArray(arr);
}
}
6.选择排序
package day0算法;
public class Day2 {
//选择排序
public static void main(String[] args) {
int []arr={9,8,7,6,5,4,3,2,1};
printf(arr);
selectSort(arr);
printf(arr);
}
public static void printf(int []arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void selectSort(int[] arr){
if(arr==null ||arr.length==1){
return;
}
int N= arr.length;
//0 n-1
//1 n-1
//2 n-1
for (int i = 0; i < N; i++) {
//zh找到最小值
int min=i;
for (int j = i+1; j <N ; j++) {
min=arr[j]<arr[min]?j:min;// 后面的数比前面的小就交换
}
//做交换
swap(arr,i,min);
}
}
public static void swap(int[] arr,int i,int j){
int t=arr[j];
arr[j]=arr[i]; //j位置的数,等于i位置的数
arr[i]=t;
}
}