java 算法
1、递归的方法实现冒泡
1 public class SortTest { 2 public static void main(String[] args) { 3 int[] arr={12,5,16,3,9,0,158,214,85}; 4 queue(arr); 5 System.out.println(Arrays.toString(arr)); 6 } 7 public static int[] queue(int[] a) { 9 for(int j=a.length-1;j>0;j--){ 10 if(a[j]<a[j-1]){ 11 int t=a[j]; 12 a[j]=a[j-1]; 13 a[j-1]=t; 14 return queue(a); 15 } 16 }18 return a; 19 } 20 } 21 }
2、两个有序数组合并为一个有序数组
package com.itheima.suanfa; public class _01TwoArrayOneArray01 { public static void main(String[] args) { //定义两个数组下标,遍历并记录index使用; int indexM =0; int indexN =0; int k=0; int[] arrayM = new int[]{1,4,6,7,8}; int[] arrayN = new int[]{2,3,5,9,11}; int[] res = new int[arrayM.length+arrayN.length]; while (indexM<arrayM.length && indexN<arrayN.length){ if(arrayM[indexM]<arrayN[indexN]){ res[k]=arrayM[indexM]; indexM++; } else{ res[k]=arrayN[indexN]; indexN++; } k++; } if(indexM!=arrayM.length){ for(int i=indexM;i<arrayM.length;i++){ res[k]=arrayM[i]; k++; } } else{ for(int i=indexN;i<arrayN.length;i++){ res[k]=arrayN[i]; k++; } } for(int a =0;a<k;a++){ System.out.println(res[a]); } } }
3、单向链表反转
package com.itheima.suanfa; public class _02SingleLinkReverse { public static void main(String[] args) { DataNode dataNode = new DataNode(1); DataNode dataNode1 = new DataNode(2); dataNode.setNext(dataNode1); DataNode dataNode2 = new DataNode(3); dataNode1.setNext(dataNode2); printLinkData(dataNode); DataNode nodeNew=reverse1(dataNode); printLinkData(nodeNew); } /** * 遍历实现 通用实现方法 * * @param head * @return */ public static DataNode reverse1(DataNode head) { if (null == head || null == head.getNext()) return head; DataNode pre=null; DataNode cur=head; DataNode next=null; while (cur!=null){ next=cur.getNext(); cur.setNext(pre); pre=cur; cur=next; } return pre; } public static void printLinkData(DataNode node){ System.out.println(node.getData()); if (node.getNext()!=null){ printLinkData(node.getNext()); } } } class DataNode { private int data; private DataNode next; public int getData() { return data; } public void setData(int data) { this.data = data; } public DataNode getNext() { return next; } public void setNext(DataNode next) { this.next = next; } public DataNode(int data) { this.data = data; } }