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

    经常撕逼的一个问题,一个程序员联冒泡排序都写不出来....说实话,不经常用真有可能写不出来,这两个for循环很容易弄错,只能说明的就是实现原理。

    注:看结果更好理解程序。。。

    冒泡排序

    package sort;
    
    /**
     * 冒泡排序
     * @author mercy 
     * 前一个和后一个比较找出最大值,再依次找找除了最大值的下一个最大值。
     */
    public class BubbleSort {
    	public static void sort(int arr[]) {
    		for (int i = 1; i < arr.length; i++){
    			for (int j = 0; j < arr.length-i; j++) { //比的次数随着i的值越大次数越少
    				if (arr[j] > arr[j + 1]) //值大的往后放,否则值小的往后放
    					int temp;
    					temp = arr[j + 1];
    					arr[j + 1] = arr[j];
    					arr[j] = temp;
    				}
    				
    			}
    			for (int m = 0; m < arr.length; m++) {
    				System.out.print(arr[m] + " ");
    			}
    			System.out.println(" ");
    		}
    		System.out.println("数组长度为:" + arr.length);
    	}
    	public static void main(String[] args) {
    		int[] arr = {5, 3, 9, 0, 6};
    		BubbleSort.sort(arr);
    	}
    
    }
    

     结果:

    3 5 0 6 9  
    3 0 5 6 9  
    0 3 5 6 9  
    0 3 5 6 9  
    数组长度为:5
    

    选择排序 

    package sort;
    //选择排序  第0个和第1个第2个n个比较大小,第1个和第二个和第n个比较大小,找出最大值,依次找出剩余最大值
    public class SelectSort {
          public static void sort(int[] arr){
              for(int i=0;i<arr.length-1;i++) {
                  for(int j=i+1;j<arr.length;j++)
                  {
                      if(arr[i]>arr[j])//值小的往前放,否则值大的往前放
                      {
                          int temp=arr[i];  
                          arr[i]=arr[j];
                          arr[j]=temp;
                      }
                  }
                  for(int m=0;m<arr.length;m++){
                	  System.out.print(arr[m]+" ");
                  }
                  System.out.println(" ");   
              }
              System.out.println("数组长度为:" + arr.length);
             
          }
          public static void main(String[] args) {
              int[]arr={5,3,9,0,6};
              SelectSort.sort(arr);   
          }
    
      }
    

     结果:

    0 5 9 3 6  
    0 3 9 5 6  
    0 3 5 9 6  
    0 3 5 6 9  
    数组长度为:5
    

    插入排序,插入排序的原理是:每一次将要排序的数插入前面已经排完序的队列中,直到全部记录插入为止。

    插入排序有三种实现,一种是直接插入,一种是折半插入,一种是希尔排序。很好理解,代码真心不好写。



  • 相关阅读:
    实验11——指针的基础应用
    C语言程序设计第10堂作业
    实验九——基本数据类型存储及应用总结
    C语言程序设计第8堂作业
    实验七——函数定义及调用总结
    实验六——循环结构程序练习总结
    实验五——循环结构学习总结
    实验四——多分支结构及本章总结
    9.29第三次作业
    zuoyeQAQ
  • 原文地址:https://www.cnblogs.com/JAYIT/p/4057536.html
Copyright © 2011-2022 走看看