几种常见排序算法

原创 2011年01月25日 10:12:00

import java.util.Arrays;  
  
/** 
 * 几种常见排序算法,插入、选择、冒泡 
 * @author hjc 
 * 
 */  
public class PaiXu {  
      
    /** 
     * 插入排序 从小到大 
     * @param nums 
     */  
    public static void charu(int[] nums){         
        for(int i=1;i<nums.length;i++)//待插入  
            for(int j=0;j<i;j++){//已排好序  
                if(nums[i]<nums[j]){//执行插入操作  
                    int temp=nums[i];//记录当前要被插入的数  
                    for(int x=i;x>j;x--)//向右移动  
                        nums[x]=nums[x-1];  
                    nums[j]=temp;//插入操作  
                    break;//插入完毕结束循环  
                }  
            }     
        System.out.println(Arrays.toString(nums));  
    }  
      
    /** 
     * 选择排序 从小到大 
     * @param nums 
     */  
    public static void xuanze(int[] nums){  
        for(int i=0;i<nums.length-1;i++){  
            int iMin=i;//初始最小数下标  
            for(int j=i+1;j<nums.length;j++)  
                if(nums[j]<nums[iMin])//寻找最小数下标  
                    iMin=j;  
            if(i!=iMin){//如果最小数下标发生变化,则执行交换操作  
                nums[i]=nums[i]+nums[iMin];  
                nums[iMin]=nums[i]-nums[iMin];  
                nums[i]=nums[i]-nums[iMin];  
            }  
        }  
        System.out.println(Arrays.toString(nums));  
    }  
      
    /** 
     * 冒泡排序 从小到大 把大的沉下去 
     * @param nums 
     */  
    public static void maopao(int[] nums){  
        int n=nums.length;  
        for(int i=0;i<n;i++){//趟数  
            int flag=0;  
            for(int j=0;j<n-1-i;j++)//次数  
                if(nums[j]>nums[j+1]){//执行交换操作  
                    nums[j]=nums[j]+nums[j+1];  
                    nums[j+1]=nums[j]-nums[j+1];  
                    nums[j]=nums[j]-nums[j+1];  
                    flag++;  
                }  
            if(flag==0)  
                break;//如果经过一轮排序后没有交换操作,那就说明已经排好序结束循环  
        }  
        System.out.println(Arrays.toString(nums));  
    }  
      
    public static void main(String[] args) {  
        int is[]={3,29,23,53,99,1,2};  
        charu(is);  
        xuanze(is);  
        maopao(is);  
    }  
}

【算法】几种常用排序算法

1. 冒泡排序(Bubble Sort) 冒泡排序算法需要遍历几次数组,在每次遍历中,比较 连续相邻 的元素。如果某一对元素是降序,则互换它们的位置;否则,保持不变。冒泡排序法需要遍历 n-1 次数组...
  • Coding_Fox
  • Coding_Fox
  • 2016年01月18日 16:31
  • 1605

几种常用排序算法的思路和复杂度对比

1、插入排序——直接插入排序、希尔排序 (1)直接插入排序思路:从第1号元素开始,每个元素依次与前面的元素做比较,小的排前面,这样当比较到最后一 个元素完即完成排序。 (2)希尔排序思路:...
  • Wengwuhua
  • Wengwuhua
  • 2016年05月17日 21:29
  • 348

几种常见的排序算法及其复杂度——冒泡排序(一)

这一系列文章将介绍算法时间复杂度的概念,以及常见排序算法的时间复杂度。...
  • zaishaoyi
  • zaishaoyi
  • 2015年08月05日 17:23
  • 809

常用几种排序算法的时间复杂度和空间复杂度

 常用的排序算法的时间复杂度和空间复杂度 排序法  最差时间分析 平均时间复杂度  稳定度  空间复杂度  冒泡排序 ...
  • yhd0916
  • yhd0916
  • 2015年09月04日 10:19
  • 2282

常见的几种内排序算法以及实现(C语言)

所有未排序的数组是经过检查合法的 主要的内排序包括冒泡、插入、希尔、堆排序、归并、快速、桶排序等 冒泡排序 冒泡排序应该是排序中最简单的算法了 主要思路如下: 1: 比较相邻的元素。如果第一个比第...
  • mcu_tian
  • mcu_tian
  • 2016年05月18日 18:43
  • 9138

11. 常见的有哪几种排序算法,试比较其时间复杂度,以及是否稳定,及各自使用的情形

几种常见排序算法的时间复杂度 排序方法 平均情况 最好情况 最坏情况 直接插入排序 O(n2) O(n) ...
  • xie294777315
  • xie294777315
  • 2014年08月08日 21:06
  • 1946

7种常用排序算法总结:

7种排序算法总结: 整理的时候资源来自网络。不妥的联系我。谢谢。 事实上,目前还没有十全十美的排序算法,有优点就会有缺点,即使是快速排序法,也只是在整体性能上优越,它也存在排序不稳定、需要大量辅助空间...
  • wangwei890702
  • wangwei890702
  • 2012年11月18日 23:05
  • 2967

几种常见排序算法及其效率

原文地址:几种常见排序算法及其效率作者:whatever介绍了几种交换排序的算法 1。冒泡排序(Bubble Sort) 是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的...
  • wukongjuan
  • wukongjuan
  • 2016年08月12日 14:59
  • 1095

几种常见的排序算法及其复杂度——快速排序(二)

快速排序(Quick Sort)及其时间复杂度
  • zaishaoyi
  • zaishaoyi
  • 2015年08月06日 13:52
  • 1163

十种常见的排序算法总结(java版)

排序是程序开发中非常常见的操作,对一组任意的数据元素经过排序操作后,就可以把他们变成一组一定规则排序的有序序列。排序算法属于算法中的一种,而且是覆盖范围极小的一种,但彻底掌握排序算法对程序开发是有很大...
  • canot
  • canot
  • 2016年03月06日 23:03
  • 2726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种常见排序算法
举报原因:
原因补充:

(最多只允许输入30个字)