java 3种简单的排序

1.冒泡排序

public class MaxMin{   

     public static void main(String args[]){
        int a[]={5,4,9,8,7,6,0,1,3,2};
        bubbleSort(a);             //静态方法中直接通过类名调用静态方法,或者通过对象去调用非静态的方法
        for(int i=0;i<a.length;i++){
           System.out.print(a[i]+"");
        }
     }  

    public static void bubbleSort(int array[]){
         int i,j,tmp;
         for(i=1;i<array.length-1;i++){
             for(j=array.length-1;j>=i;j--){
                 if(array[j]<array[j-1]){
                    tmp=array[j];
                    array[j]=array[j-1];
                    array[j-1]=tmp;
                 }
            }
         }
    }
}

2.插入排序

public class TestSort{
  public static void main(String args[]){
     int array[] = {7,3,19,40,4,7,1};
     insertSort(array);
     for(int i=0;i<array.length;i++){
   	System.out.print(array[i]+" ");
     }
  }	

  public static void insertSort(int a[]){
     if(a!=null){
        for(int i=1;i<a.length;i++){
	   int tmp = a[i],j=i;
	   while(j>=1&&a[j-1]>tmp){
		a[j] = a[j-1];
	        j--;
	   }
	   a[j]=tmp; //每一个a[i]即tmp值,只要是小,就j--,一直把她护送到最小的位置
	}
     }
  }
}

3.选择排序

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.

public class TestSort{
       public static void main(String args[]){
          int array[] = {7,3,19,40,4,7,1};
          selectSort(array);
   	  for(int i=0;i<array.length;i++){
   	    System.out.print(array[i]+" ");
   	  }
       }	

	public static void selectSort(int a[]){
	    int minIndex=0;
	    int temp=0;
	    if((a==null)||(a.length==0))
		return;
	    for(int i=0;i<a.length-1;i++){
	       minIndex=i;    //将外层循环的下标赋值给临时变量
	       for(int j=i+1;j<a.length;j++){
	           if(a[j]<a[minIndex]){
	        	minIndex=j;
	            }
	       }
	       if(minIndex!=i){ //在二层循环退出后,如果临时变量改变,则说明有比当前外层循环位置更小的元素,需将这两个元素交换          tmp=a[i];
	        a[i]=a[minIndex];
	        a[minIndex]=temp;
	      }
	    }
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 04:35:44

java 3种简单的排序的相关文章

使用JavaScript几种简单的排序

前几天在工作碰到一个json对象排序的问题,一直认为JavaScript不能进行对象的排序,其实并不是,今天就来总结下常见的几种简单排序: 第一类 纯数字: var arrOld = [4,10,9,1,0,31]; var arrNew = arrOld.sort(sortNum); function sortNum (a,b){ return a-b; } //输出结果:[0, 1, 4, 9, 10, 31] sort()   方法用于对数组的元素进行排序,在原数组上进行排序,不生成副本.

java几种常见的排序算法总结

[java] view plain copy /*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:"); for(int i=0;i<20;i++){ num[i]=(int)(Math.random()*100)

三种简单的排序算法

排序算法总是分不清,借了本数据结构来专门看了一下 说一下分类,主要有五类,插入排序,交换排序,选择排序,基数排序和归并排序 今天中午看了一下插入排序中的直接插入排序,交换排序的冒泡排序,选择排序中的冒泡排序 1.插入排序 将数组分成两个部分,一个是有序,一个是无序.将无序的每个元素插入到有序中,一共需要n - 1趟,最后一个元素不用计算 每一趟将第1个元素即array[i]元前面的i个元素比较,如果比array[i]大则后移一个位置.这样找到第i个元素的位置,插入 2.冒泡排序 将相邻两个元素比

四种简单的排序算法

我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF.Asp.Net MVC.AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net.WinForm.还应该有着牢固的计算机基础知识,比如数据结构.操作系统.编译原理.网络与数据通信等.有的朋友可能觉得这方面的东西过于艰深和理论化,望而却步,但我觉得假日里花上一个下午的时间,研究一种算法或者一种数据结构,然后写写心得,难道不是一件乐事么?所以,我打算将一些常见的数据结构和算法总结一下,不一定要集中一段时间花费很大精力

几种简单的排序

1.简单选择排序 选择排序又叫简单选择排序.基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数列的最后.直到全部待排序数据元素排完. void select(int[] list) { int min = 0; for (int i = 0; i < list.Length; i++) { min = i; for (int j = i + 1; j < list.Length; j++) { if (list[j] < list[min]) { min

两种简单的排序—适合我这样的新手

============================================= 一种:选择排序 package edu.xl.lesson1;/** * 选择排序 * @author Administrator * */public class Selection_Sort { public static void main(String[] args) { //实例化一组数 int a[]={2,42,245,53,13,46,1,5,75,34}; for(int i = 0;i

四种简单的排序算法的php实现

无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下 //选择排序 function selection_sort($arr){ $len = count($arr); if($len <= 1) return $arr; for($i=0; $i<$len; $i++){ $min = $arr[$i]; $pos = $i; for($j=$i+1; $j<$len; $j++){ if($min > $arr[$j]){ $min = $ar

Python实现几种简单的排序算法

一.冒泡排序 概念:为一个无序的列表排成有序的 实现过程描述:(升序) 1.比较相邻的元素,如果第一个比第二个大,就交换他们的位置 2.对每一对相邻元素重复1的工作,从开始第一队到最后一对,最后结束的时候最大的数会在后面 3.针对所有元素重复1,2的工作,除了最后一个数,因为最后的数最大,省略这个过程 4.持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较 复杂度: 时间复杂度为O(n^2) 代码实现: #给定一个列表 list = [11,54,3243,323,3,82,1

java几种简单设计模式

[单例模式] 单例设计模式的主要目的是:在整个系统中只能出现一个类的实例.比如全局配置信息,一个Factory,或者是一个主控类 public class Singleton { private static Singleton singleton = new Singleton; private Singleton() {} public static Singleton getInstance() { return singleton; } } [工厂模式] 三元素:接口,实现接口的类,工厂