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

    1.冒泡排序(升序排序)

    临近的两个元素两两交换,第一轮排序将最大的数放到最后一位,第二轮排序将第二大的数放到倒数第二位。例如对{2,5,3,4,1}这个数列进行排序

    public BubbleSort(int[] arr)

    {

      int temp = 0;

      for(int i = 0;i < arr.Length-1; i++)

      {

        // 提前退出冒泡循环的标志位
        boolean flag = false;

        for(int j=0;j<arr.length-i-1;j++)

        {

          if(arr[j] > arr[j+1])

          {

            temp = arr[j];

            arr[j] = arr[j+1];

            arr[j+1] = arr[j];

               flag = true; // 表示有数据交换

          }

        }

         if (!flag) break;  // 没有数据交换,提前退出

    }

    2.选择排序

     public SelectSort(int[] arr)

    {

      for(int i=0;i<arr.Length;i++)

      {

        for(int j=i+1; j<arr.Lenth;j++)

        {

          if(a[i]>a[j])

          {

            temp=a[i];

            a[i]=a[j];

            a[j]=temp;

          }

        }

      }

    }

    2.1选择排序的优化算法

     1 //选择排序
     2 public class SelectionSort {
     3     public static void main(String[] args) {
     4         int[] arr={1,3,2,45,65,33,12};
     5         System.out.println("交换之前:");
     6         for(int num:arr){
     7             System.out.print(num+" ");
     8         }        
     9         //选择排序的优化
    10         for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
    11             int k = i;
    12             for(int j = k + 1; j < arr.length; j++){// 选最小的记录
    13                 if(arr[j] < arr[k]){ 
    14                     k = j; //记下目前找到的最小值所在的位置
    15                 }
    16             }
    17             //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
    18             if(i != k){  //交换a[i]和a[k]
    19                 int temp = arr[i];
    20                 arr[i] = arr[k];
    21                 arr[k] = temp;
    22             }    
    23         }
    24         System.out.println();
    25         System.out.println("交换后:");
    26         for(int num:arr){
    27             System.out.print(num+" ");
    28         }
    29     }
    30 }
  • 相关阅读:
    K-Means算法总结
    C#设计模式(1)——单例模式
    sql 建表以及查询---复杂查询之成绩排名
    c# 折半查找法实现代码
    c# 合并两个有序数组
    C#中static void Main(string[] args)的含义
    C#中Main函数为什么要static
    C# 生成订单号的几种方式
    sql for xml path用法
    web端跨域调用webapi
  • 原文地址:https://www.cnblogs.com/luluyouwei/p/12800851.html
Copyright © 2011-2022 走看看