package fifthsa;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("创建一个二十个元素的随机的数组");
int Nu[]=new int[20];
MakeArray makeArray= new MakeArray();
makeArray.makeArray(Nu); //用Make类为函数随机赋值
System.out.println("第一种方法排列");
rankWay1 rank1= new rankWay1();
rank1.way1(Nu);
PrintOut printNu=new PrintOut();
printNu.printOut(Nu);
System.out.println("第二种方法排列");
rankWay2 rank2= new rankWay2();
rank2.way2(Nu);
printNu.printOut(Nu);
System.out.println("第三种方法排列");
rankWay3 rank3= new rankWay3();
rank3.way3(Nu);
printNu.printOut(Nu);
System.out.println("第四种方法排列");
rankWay4 rank4= new rankWay4();
rank4.way4(Nu);
printNu.printOut(Nu);
}
}
//对数组随机赋0-10000的值
class MakeArray{
public void makeArray(int Nu[]){
for (int i = 1; i <=Nu.length; i++ ) {
// Math.random() 方法是随机产生一个正号的double型的0-1的数
int t =(int)(Math.random()*10000); //获得的随机数转成 整型
Nu[i]=t;
}
}
}
//方法1的类
class rankWay1{
public void way1( int Nu[]){
int temp=0;//定义一个中转量
for (int i = 0; i < Nu.length-1; i++) {
//内层循环,开始逐个比较
for (int j = 0; j < Nu.length-i-1; j++) {
if (Nu[j]>Nu[j+1]) {
temp=Nu[j];
Nu[j]=Nu[j+1];
Nu[j+1]=temp;
}
}
}
}
}
//方法2的类
class rankWay2{
public void way2(int Nu[]){
for (int i = 0; i < Nu.length; i++) {
int temp=0;
for (int j = i+1; j < Nu.length; j++) {
if(Nu[i]>Nu[j]){
temp=Nu[i];
Nu[i]=Nu[j];
Nu[j]=temp;
}
}
}
}
}
//方法3的类
class rankWay3{
public void way3(int Nu[]) {
for (int i = 2; i <Nu.length; i++) {
int tempNu=i;
int theOne =Nu[i];
while (theOne>=0 && Nu[tempNu]<Nu[tempNu-1] ) {
int temp=0;
temp=Nu[tempNu];
Nu[tempNu]= Nu[tempNu-1];
Nu[tempNu-1]=temp;
tempNu--;
}
}
}
}
//方法4的类
class rankWay4{
public void way4(int Nu[]){
for (int i = 2; i < Nu.length; i++) {
int theSecond=Nu[i];
int theFirstNu=i-1;
while(theFirstNu>0&&Nu[theFirstNu]>theSecond) {
Nu[theFirstNu+1]=Nu[theFirstNu];
theFirstNu--;
}
Nu[theFirstNu+1]= theSecond;
}
}
}
//依次打印数组的类
class PrintOut{
public void printOut(int Nu[]) {
for (Integer i:Nu) {
System.out.println(i);
}
}
}
分享到:
相关推荐
简单选择排序是一种基础的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。这种排序方式时间复杂度为O(n^2),适用于小...
- **外层循环**:用于控制排序轮数,每一轮将当前未排序部分的最大值移动到正确位置。 - **内层循环**:用于每次比较并交换相邻的两个元素。 - **交换条件**:`if(a[i] > a[i+1])`,当当前元素大于后一个元素时,...
冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序...
桶式排序法桶式排序法桶式排序法桶式排序法
选择排序法(Selection Sort)是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。本文将详细介绍C语言实现...
选择排序是一种简单的排序算法,它的基本思想是在未排序的序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)的元素,然后放到已排序序列的末尾。...
c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治策略,通过选取一个“基准”元素,将数组分为两个子数组,使得一个子数组的所有元素都小于或等于基准,另一个子数组...
在编程领域,排序算法是数据结构与算法课程中的基础部分,它用于组织和优化数据的存储方式。在C#中,实现排序算法可以极大地提升程序的效率和用户体验。...这将是一个很好的实践平台,帮助你深入理解和运用选择排序法。
在C#环境下使用冒泡排序法对一位数组进行排序
1. 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的...
它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换,也就是说该数列已经排序完成。 **代码实现:** ```csharp using System; ...
起泡法排序的排序过程如下,首先将第一个记录与第二个记录进行比较,若为逆序(R[1]>R[2]),则将两个记录交换,然后比较第二个记录和第三个记录。依次类推,直到第n- 1个记录完成比较为止。上述过程称为第一次起泡...
双向起泡排序法通过设置两个指针,一个用于追踪当前未排序部分的首节点(前指针),另一个追踪已排序部分的尾节点(后指针)。在每一轮排序中,这两个指针会逐步接近,直到它们相遇,此时整个链表排序完成。 排序...
直接排序法和堆排序法为随机数组排序后输出
### 一种快速的排序法—插入合并排序法 #### 概述 在计算机科学领域,排序算法是一项基础且重要的技术,广泛应用于数据管理和处理过程之中。根据数据存储位置的不同,排序算法可以分为内排序和外排序两大类。本文...
用C++写的简单的冒泡排序法,对于初学C++的人应该比较有用,欢迎下载分享
功能:编写函数用选择排序法对数组中的数据进行从小到大的排序;
冒泡排序法是一种基础但经典的排序算法,尤其适用于小规模数据的排序。它的工作原理可以形象地比喻为水底下的气泡逐个上浮的过程。在C++编程中,实现冒泡排序法主要涉及到数组操作和条件判断。下面将详细阐述冒泡...