java经典排序算法

1、冒泡排序

 	static void bubble_sort(int[] str)
        {
            for (int i = 0; i < str.length; i++)
            {
                for (int j = i; j < str.length; j++)
                {
                    if (str[i] > str[j])
                    {
                        int temp = str[i];
                        str[i] = str[j];
                        str[j] = temp;
                    }
                }
            }
        }

2、交叉排序
	
public static  void quickSort(int[] A, int start, int end) {
    if (start < end) {
        int pivotLocation = partition(A, start, end);
        quickSort(A, start, pivotLocation - 1);
        quickSort(A, pivotLocation + 1, end);
    }
}
private static int partition(int[] A, int start, int end) {
    int pivot = A[end];
    int i = start;
    for (int j = start; j < end; ++j) {
        if (A[j] <= pivot) {
            int tmp = A[i];
            A[i] = A[j];
            A[j] = tmp;
            ++i;
        }
    }
    A[end] = A[i];
    A[i] = pivot;
    return i;
}

3、调整数据奇数位于偶数前面(冒泡原理)


public static void reOrderArray(int [] array) {  
	      int temp;  
	      for(int i=0;i<array.length; i++){  
	          for(int j=0; j<array.length-1; j++){  
	              if(array[j]%2==0 && array[j+1]%2==1){  
	                  temp = array[j];  
	                  array[j] = array[j+1];  
	                  array[j+1] = temp;  
	              }  
	          }  
	      }   
	  }  
}

4、获取最长回文字符串
	public static String longestPalindrome1(String s) {  
        int maxPalinLength = 0;  
        String longestPalindrome = null;  
        int length = s.length();  
        for (int i = 0; i < length; i++) {  
            for (int j = i + 1; j < length; j++) {  
                int len = j - i;  
                String curr = s.substring(i, j + 1);  
                if (isPalindrome(curr)) {  
                    if (len > maxPalinLength) {  
                        longestPalindrome = curr;  
                        maxPalinLength = len;  
                    }  
                }  
            }  
        }  
        return longestPalindrome;  
    }  

    public static boolean isPalindrome(String s) {  
        for (int i = 0; i < s.length() - 1; i++) {  
            if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {  
                return false;  
            }  
        }  
        return true;  
    }
 
 
5、快速排序
public static  void quickSort(int[] A, int start, int end) {
    if (start < end) {
        int pivotLocation = partition(A, start, end);
        quickSort(A, start, pivotLocation - 1);
        quickSort(A, pivotLocation + 1, end);
    }
}
private static int partition(int[] A, int start, int end) {
    int pivot = A[end];
    int i = start;
    for (int j = start; j < end; ++j) {
        if (A[j] <= pivot) {
            int tmp = A[i];
            A[i] = A[j];
            A[j] = tmp;
            ++i;
        }
    }
    A[end] = A[i];
    A[i] = pivot;
    return i;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值