数组的排序分析

来源:互联网 发布:网络编辑主要做什么的 编辑:程序博客网 时间:2024/05/18 03:26
数组的排序:
    数组的排序分为八大排序方法:
               ①:插入排序的直接插入排序和希尔排序。
            ②:选择排序的简单选择排序和堆排序。
            ③:交换排序的冒泡排序和快速排序。
            ④:归并排序。
            ⑤:基数排序。



下面就具体举例几种简单的排序:


(1)冒泡排序

        冒泡排序就是数组两个数之间两两对比,选出最大或者最小的值进行排序

class  ShuZu
{
public static void main(String[] args) 
{
int a[]={-5,1,3,6,1,0,9,-2}; // 定义一个数组,数组的个数为8.

   for (int i=0;i<7;i++ )  // 确定一个变量,定义外部循环的条件
   {
for (int j=1+i;j<8;j++) // 确定另一个变量,定义内部循环的条件,
       {
if (a[i]<a[j])  // 比较大小值,一个数与相邻的一个数做对比,如果小就交换位置
                {
int T=a[j];
a[j]=a[i];
a[i]=T;     //  满足条件,交换位置
                 }
        }
    }
    for (int i=0;i<8 ;i++ )  //定义输出的循环
    {   
         System.out.println(a[i]); //  输出排序后的结果
     }
 }
}






(2) 插入排序
               直接插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的有序序列中的适当位置,直到全部记录插入完成为止。


class  test1
{
public static void main(String[] args) 
{
   int a[]={84,62,4515,75,26,32};  //首先定义数组以及数组的个数。
            int b=1;
   int c=0; 
   int d=6; 
   for (b=1;b<d ;b++ )  //   确定变量,定义外部循环条件。
  {
       for (c=b-1;c>=0&&a[c]>a[c+1] ;c-- )  //  确定变量, 定义内部循环的条件
{
    int e=a[c];  //  此内部循环是从1下标开始向前比较,如若前面的值比后面的大,则交换位置,以此类推。最终形成有序的区间
    a[c]=a[c+1];
                     a[c+1]=e;
        }
   }
   for (int f=0;f<6 ;f++ )
   {
System.out.println(a[f]); //  最后输出排序后的结果
    }
}
}






(3)选择排序
              选择排序中的用下标排序:在未排序的序列中选择出最小值的下标,并用最小值下标的元素与未排序序列的首元素进行交换




public class Demo{
public static void main(String[] args)
{
int[] arr = {55 ,45, 86, 17, 23};  //  先定义数组的个数

for(int i = 0;i < arr.length - 1;i++) //  确定变量,并定义外部循环条件
{
int minIndex = i; // 这里定义一个最小值的下标。

for(int j = i +1; j < arr.length;j++) // 确定变量,定义内部循环条件
{
if(arr[minIndex] > arr[j])  // 如果定义的下标数大于相邻的这个数,则交换位置,以此类推。
{
minIndex = j;
}
}
if(minIndex != i) //  这里所定义的值不等于i, 则进入下面条件
{
int temp;
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}

}


for(int i  = 0;i< arr.length;i++)
{
System.out.println(arr[i]); //    输出所排列的结果
}

}

}
0 0
原创粉丝点击