`
叶紫夜子
  • 浏览: 10222 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Java

阅读更多
排序算法总结
1.冒泡排序
算法描述:
    在要排序的一组数中,先拿第一个数与其后所有的数做比较,遇到比它小的就做交换;然后拿第二
个数与其后的所有数做比较,遇到比它小的就交换;一直到最后两个数做比较,小的在前,大的在后。
优点:比较稳定
缺点:比较次数多
1,4,2,7,0,8,6,9,5,3
0,4,2,7,1,8,6,9,5,3
0,2,4,7,1,8,6,9,5,3
0,2,1,7,4,8,6,9,5,3
         .
         .
         .


示例代码:
//定义一个数组测试类
public class ArrayTest
{

/**
* 主函数
*/
public static void main(String[] args)
            {
                //实例化一个数组测试对象
ArrayTest at=new ArrayTest();
                //定义一个数组并初始化
        int []array={1,4,2,7,0,8,6,9,5,3};
                //循环实现遍历该数组
                for (int i = 0; i < array.length; i++)
                    {
    int t = array[i];
    System.out.print(t + "\t");
     }
                 //换行
        System.out.println();
                //调用排序方法
                array=at.maopaoCollate(array);
                 //遍历输出排序后的数组
                for (int i = 0; i < array.length; i++)
                    {
int t = array[i];
System.out.print(t + "\t");
             }
             }
          //定义冒泡排序的方法
         public int[] maopaoCollate(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;
           }

        }

      }
                //返回排好序的数组
return arr;

  }
}
               
                   
2.希尔排序
算法描述:
     将一组数分成相同个数的几组,将每一组的第一个数比较,小的放前面,大的放后面,再比较第二个,第三个.....,一直到最后一个;
再将该数组分成更多的组,依照前面的方法进行比较。
优点:比较次数相对较少
缺点:不稳定,不易理解
1  4  2  7  0          8  6  9  5  3  //先分成两组,比较
1  4  2  5  0          8  6  9  7  3

1 4    2 7    0 8   6 9   5 3  //分成五组,比较
0 3    1 4    2 7   5 8   6 9

0   3   1   4   2   7   5   8   6   9//分成十组,比较
0   1   2   3   4   5   6   7   8   9
  
示例代码:
public class ArrayTest3 {

/**
* 主函数
*/
public static void main(String[] args)
{
//实例化一个数组测试对象
ArrayTest3 at=new ArrayTest3();
//定义一个数组并初始化
int []array={1,4,2,7,0,8,6,9,5,3};
//循环实现遍历该数组
        for (int i = 0; i < array.length; i++) {
int t = array[i];
System.out.print(t + "\t");
}
        //换行
    System.out.println();
    //调用希尔排序方法
array=at.shellCollate(array);
//循环实现遍历该数组,输出排序后的数组
        for (int i = 0; i < array.length; i++) {
int t = array[i];
System.out.print(t + "\t");
}

}
//定义希尔排序方法
public int[] shellCollate(int arr[])
{
//将数组分祖
for(int increment=arr.length/2;increment>0;increment/=2)
{
  //将分好组的数排序
  for(int i=increment;i<arr.length-1;i++)
   {
     int temp=arr[i];
     int j=0;
     for(j=i;j>=increment;j-=increment)
       {
//比较,如果前面的小于后面的,则交换
if(temp<arr[j-increment])
{
    arr[j]=arr[j-increment];
  }
    else
       break;
}
arr[j]=temp;
}
}

//返回排好序的数组
return arr;

     }

}
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    Java API文档 中文网页版

    Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...

    java_011 java 人脸识别完整源代码

    java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011 java 人脸识别完整源代码java_011...

Global site tag (gtag.js) - Google Analytics