数组的排序分析
来源:互联网 发布:网络编辑主要做什么的 编辑:程序博客网 时间:2024/05/18 03:26
数组的排序:
数组的排序分为八大排序方法:
①:插入排序的直接插入排序和希尔排序。
②:选择排序的简单选择排序和堆排序。
③:交换排序的冒泡排序和快速排序。
④:归并排序。
⑤:基数排序。
下面就具体举例几种简单的排序:
{
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]); // 输出所排列的结果
}
}
}
数组的排序分为八大排序方法:
①:插入排序的直接插入排序和希尔排序。
②:选择排序的简单选择排序和堆排序。
③:交换排序的冒泡排序和快速排序。
④:归并排序。
⑤:基数排序。
下面就具体举例几种简单的排序:
(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
- 数组的排序分析
- Java中对数组的排序方法总汇分析
- 数组排序方法的性能比较(3):LINQ排序实现分析
- 多维数组、数组的排序
- 数组的排序:冒泡排序、选择排序
- 数组的排序
- 数组的排序学习!!
- 二维数组的排序
- 数组排序的问题
- javascript的数组排序
- 二维数组的排序
- php数组的排序
- 各种数组的排序
- javascript的数组排序
- PHP数组的排序
- 数组的归并排序
- 数组的排序
- 二维数组的排序
- 关于计时的相关知识点
- OpenCV学习——图像的缩放
- /contrib/contrib-global.mk: No such file or directory
- 编程练习
- 三个经典的pv原语
- 数组的排序分析
- linux内存--高端内存
- 阿里云DDOS防护——ubuntu14.04下iptables的使用
- C语言初学---对位运算符的认识
- 什么是ANR?如何避免ANR?
- Android 如何在 Android Studio 2.2 版本实现 refresh 操作?
- JAVA中this用法小结
- Python实战--第一篇(数据结构相关)
- android 倒计时CountDownTimer的使用