zoukankan      html  css  js  c++  java
  • 排序算法

    JAVA排序算法

    1、冒泡排序

    int size = 30;
    int [] arr = new int arr[size];
    int arr.length = a;
    int temp;
    boolen flag = false
    for(int i=0;i<a-1;i++){
    	for(int j=0;j<a-1-i;j++){
    		if(arr[j]<arr[j+1]);
    		temp = arr[j];
    		arr[j] = arr[j+1];
    		arr[j+1] = temp;
    	}
    }
    
    if(!flag){
    	break;
    }else{
    	flag = false;
    }
    
    • 封装↓
    public class BubbleSort {
     public static void main(String[] args) {
    //        int[] arr = {3, 9, -1, 10, -2};
         int size = 8;
         int[] arr = new int[size];
         for (int i = 0; i < arr.length; i++) {
             arr[i] = (int) (Math.random()*size);
         }
         System.out.println(Arrays.toString(arr));
         sort(arr);
     }
    
      //小到大排序
     public static void sort(int[] arr) {
         int a = arr.length;
         int temp;//临时变量
         boolean flag = false;//标记是否发生变化
         for (int i = 0; i < a - 1; i++) {
    
             for (int j = 0; j < a - 1 - i; j++) {
                 if (arr[j] > arr[j + 1]) {//比较大小,逆序交换
                     flag = true;
                     temp = arr[j];
                     arr[j] = arr[j + 1];
                     arr[j + 1] = temp;
                 }
             }
             System.out.println("第" + (i + 1) + "次排序结果");
             System.out.println(Arrays.toString(arr));
    
             if (!flag) {
                 break;
             } else {
                 flag = false;
             }
         }
     }
    }
    

    2、选择排序

    
    import java.util.Arrays;
    
    //选择排序,假定第一个数为最小数,一直往后比较直到找出最小数交换。
    //时间复杂度O(n^2)
    public class SelectSort {
    
     public static void main(String[] args) {
         int size = 12;
         int[] arr = new int[size];
         for (int i = 0; i < size; i++) {
             arr[i] = (int) (Math.random() * size);
         }
    //   int [] arr = {20,-1,0,-9,7,6};
         System.out.println("排序前");
         System.out.println(Arrays.toString(arr));
    
         selectsort(arr);
     }
    
     public static void selectsort(int[] arr) {
    
         for (int i = 0; i < arr.length - 1; i++) {
             int minindx = 0;//假定最小数下标为第一数
             int min = arr[0];//假设最小数的值为第一个数
             for (int j = i + 1; j < arr.length; j++) { //走第二遍从第二位数字开始
                 if (min > arr[j]) {//如果假定的最下值比后面的大,进行交换
                     min = arr[j];
                     minindx = j;
                 }
             }
             if (minindx != i) {
                 arr[minindx] = arr[i];
                 arr[i] = min;
             }
             
             System.out.println("第" + (i + 1) + "次排序");
             System.out.println(Arrays.toString(arr));
         }
     }
    }
    

    ······待更

  • 相关阅读:
    操作系统的发展史
    多线程的些许理解(平台x86,具体考虑linux,windows)
    C++ 11 智能指针
    C++虚函数和纯虚函数
    Qt之excel 操作使用说明
    查找之二叉排序树
    图的一些总结
    树的一些总结
    直接插入排序
    冒泡和选择排序
  • 原文地址:https://www.cnblogs.com/ed1s0n/p/13058227.html
Copyright © 2011-2022 走看看