4.11 数组的排序操作(冒泡排序 选择排序)

本文介绍并实现了两种基本的数组排序算法:冒泡排序和选择排序。通过具体的Java代码示例展示了如何实现这两种排序方法,并提供了详细的注释来帮助理解每一步的逻辑。此外,还包含了数组元素的打印和交换操作。
//数组的排序操作
class  ArraySortDemo
{
	public static void main(String[] args) 
	{
		int[] arr={2,9,6,7,4,1};
		printArray(arr);
		swich(arr);
		printArray(arr);

	
	}
   //冒泡排序
    static void bubbleSort(int[] arr)
	  {
		//逐轮分析 总结规律
		for (int j=1;j<=arr.length-1 ;j++ )
		{
			for (int i=1; i <= arr.length-j ;i++ )
			{
				if (arr[i-1]>arr[i])
				{
					swap(arr,i-1,i);
				}
			}
		}
		/*
		for (int i=1; i <= arr.length-i ;i++ )
		{
			if (arr[i-1]>arr[i])
			{
				swap(arr,i-1,i);
			}
		}
		//第二轮
		for (int i = 1 ;i <= arr.length-2 ;i++ )
		{
			if (arr[i-1]>arr[i])
			{
				swap(arr,i-1,i);
			}
		}
		//第三轮
		for (int i = 1 ;i <= arr.length-3 ;i++ )
		{
			if (arr[i-1]>arr[i])
			{
				swap(arr,i-1,i);
			}
		}
		*/
	  }
   //选择排序
   static void swich (int[] arr)
	{
	   for (int j=0;j <=arr.length  ;j++ )
	   {
			 for (int i=j+1;i <= arr.length-1 ;i++ )
			  {
				  if (arr[j] > arr[i])
				  {
					  swap(arr,j,i);
				  }
			  }
	  }
	   
	  /* 
	  //第一轮
	  for (int i=1;i <= arr.length-1 ;i++ )
	  {
		  if (arr[0] > arr[i])
		  {
			  swap(arr,0,i);
		  }
	  }
	  //第二轮
	  for (int i=2;i <= arr.length-1 ;i++ )
	  {
		  if (arr[1] > arr[i])
		  {
			  swap(arr,1,i);
		  }
	  }
	  //第三轮
	  for (int i=3;i <= arr.length-1 ;i++ )
	  {
		  if (arr[2] > arr[i])
		  {
			  swap(arr,2,i);
		  }
	  }
	  */
    }


   //数组元素交换
	static void swap (int[] arr ,int index1,int index2)
	{
		int temp =arr[index1];
		arr[index1]=arr[index2];
		arr[index2]=temp;
	}


   //打印数组元素操作
	static void printArray(int[] arr)
	{
		if (arr == null)
		{
			System.out.println("null");
			return;
		}
		String ret = " [ ";
		for (int index = 0;index < arr.length ;index++ )
		{
			ret = ret + arr[index];
			if (index != arr.length-1)
			{
				ret = ret + ",";
			}
		}
		ret = ret + " ] ";
		System.out.println(ret);
	}
}

帮我做选择题 将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少? A. 0.27 B. 0.45 C. 0.64 D. 0.73 分数 2 作者 DS课程组 单位 临沂大学 折半查找对应的判定树中,外部结点是( )。 A. 一次成功查找过程终止的结点 B. 一次失败查找过程终止的结点 C. 一次成功查找过程中经过的中间结点 D. 一次失败查找过程中经过的中间结点 分数 2 作者 M 单位 西南石油大学 顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为( )次。 A. n B. n+1 C. n+2 D. n-1 分数 2 作者 M 单位 西南石油大学 在散列存储中,装填因子α的值越大,则( )。 A. 存取元素时发生冲突的可能性就越大 B. 存取元素时发生冲突的可能性就越小 C. 存取元素时不可能发生冲突 D. 毫无影响 分数 2 作者 ZXM 单位 西南石油大学 分别以下列序列构造二叉排序树,与用其他三个序列所构造的结果不同的是( )。 A. (89,120,99,86,72,80) B. (89,120,99,80,72,86) C. (89,80,86,72,120,99) D. (89,80,120,72,86,99) 分数 2 作者 黄龙军 单位 绍兴文理学院 对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A. (n-1)/2 B. n/2 C. (n+1)/2 D. n 分数 2 作者 YJ 单位 西南石油大学 有序表元素存储在数组A[1..11]中,其元素为{A,B,C,D,E,F,G,H,I,J,K};二分法查找元素A依次比较的元素是 A. F,B,A B. F,E,B,A C. F,C,A D. C,B,A 分数 2 作者 DS课程组 单位 浙江大学 下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2) A. 冒泡排序 B. 插入排序 C.排序 D. 快速排序 分数 2 作者 DS课程组 单位 浙江大学 对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是: A. 冒泡排序 B. 希尔排序 C. 归并排序 D. 基数排序 分数 2 作者 DS课程组 单位 浙江大学 就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是: A.排序 < 归并排序 < 快速排序 B.排序 > 归并排序 > 快速排序 C.排序 < 快速排序 < 归并排序 D.排序 > 快速排序 > 归并排序 分数 2 作者 考研试卷 单位 浙江大学 下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是: 1.插入排序;2.选择排序;3.起泡排序4.希尔排序;5.排序 A. 仅1、2 B. 仅2、3 C. 仅3、4 D.4、5 分数 2 作者 DS课程组 单位 临沂大学 设一组初始记录关键字序列为(60,80,55,40,42,85),则以第一个关键字60为基准而得到的一趟快速排序结果是( )。 A. 40,42,60,55,80,85 B. 42,45,55,60,85,80 C. 42,40,55,60,80,85 D. 42,40,60,85,55,80
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值