请用Java实现冒泡、插入、选择排序中的任意一个排序算法。

请用Java实现冒泡、插入、选择排序中的任意一个排序算法。

作为初学者,以下实现方法可能笨拙或有误,希望有大神看到后给予优化和指点!~

public class Sort {
	public static void main(String[] args) {
		int [] unsorted = {1,15,10,66,99,88};
		
		int[] mpSort = MPSort(unsorted);
		System.out.println(Arrays.toString(mpSort));
		
		System.out.println("-----------------------");
		
		int[] xzSort = XZSort(unsorted);
		System.out.println(Arrays.toString(xzSort));
		
		System.out.println("-----------------------");
		
		int[] crSort = CRSort(unsorted);
		System.out.println(Arrays.toString(crSort));
	}
	
	//冒泡排序
	public static int[] MPSort(int[] arr){
		for(int i = arr.length - 2;i >= 0;i--){
			for(int j = 0;j <= i;j++ ){
				if(arr[i] > arr[i+1]){
					int tmp;
					tmp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = tmp;
				}
			}
		}
		return arr;		
	}
	
	//插入排序
	public static int[] CRSort(int[] unsorted){
        for (int i = 1; i < unsorted.length; i++)
        {
            if (unsorted[i - 1] > unsorted[i])
            {
                int temp = unsorted[i];
                int j = i;
                while (j > 0 && unsorted[j - 1] > temp)
                {
                    unsorted[j] = unsorted[j - 1];
                    j--;
                }
                unsorted[j] = temp;
            }
        }
		return unsorted;
		
	}
	
	//选择排序
	public static int[] XZSort(int[] arr){
		for(int i = 1;i < arr.length-1;i++){
			for(int j = i;j < arr.length-1;j++){
				if(arr[j-1] > arr[j]){
					int tmp;
					tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}
			}
		}
		return arr;
	
	}
}
下面附上大神-续写经典的博文: Java常用排序算法/程序员必须掌握的8大排序算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用冒泡排序或快速排序等算法来实现。以下是冒泡排序的示例代码: 1. 首先,从键盘输入10个整数,存储到数组: int arr[10]; for (int i = 0; i < 10; i++) { cin >> arr[i]; } 2. 然后,使用冒泡排序算法进行排序: for (int i = 0; i < 9; i++) { for (int j = 0; j < 9 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } 3. 最后,按照从小到大的顺序输出排序后的数组: for (int i = 0; i < 10; i++) { cout << arr[i] << " "; } cout << endl; 输出结果即为排序后的数组。 ### 回答2: 排序是计算机的基本操作之一,对于处理大量数据尤其重要。本题需要对10个整型数据进行从小到大排序,可以使用常见的排序算法,例如冒泡排序插入排序选择排序、快速排序等等,这里以冒泡排序为例。 冒泡排序的基本思想是依次比较相邻两个数的大小,如果前者大于后者,则交换它们的位置,直到整个序列都是从小到大为止。 首先,我们可以通过键盘输入函数scanf()将10个整型数据存储到数组,代码如下: ``` #include <stdio.h> int main() { int arr[10]; //定义一个10个元素的整型数组 int i,j,temp; //输入10个整数 printf("请输入10个整型数据:\n"); for(i=0;i<10;i++) { scanf("%d",&arr[i]); } //冒泡排序 for(i=0;i<9;i++) //需要进行9次比较 { for(j=0;j<9-i;j++) //每次比较后,需要比较的元素个数减1 { if(arr[j]>arr[j+1]) //如果前者大于后者,则交换它们的位置 { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } //输出排序后的结果 printf("排序后的结果为:\n"); for(i=0;i<10;i++) { printf("%d ",arr[i]); } return 0; } ``` 其,变量i和j分别表示循环的次数和需要比较的元素下标,变量temp用于进行交换操作。 以上程序,需要进行9次比较。每次比较过程,需要比较的元素个数会逐渐减少,因为在每一轮比较,都会找到当前未排序序列最大(小)的元素,并将其放到已排序序列的最后一个位置,因此后面的元素就不再需要进行比较。 最后,输出排序后的结果即可,如下所示: 请输入10个整型数据: 9 5 4 7 2 1 8 3 6 0 排序后的结果为: 0 1 2 3 4 5 6 7 8 9 以上就是用C语言实现10个整型数据按照从小到大排序的过程,希望对初学者有所帮助。 ### 回答3: 在学习编程语言的时候,我们经常需要练习各种算法,如排序算法。本题要求我们使用键盘输入10个整数,并将它们按照从小到大的顺序排序,最后输出排好序的结果。 首先,我们需要从键盘上输入10个整数。在大多数编程语言,都提供了从键盘上读取数据的函数,如C++的cin、Java的Scanner等。我们可以使用这些函数来实现输入操作,例如C++代码如下: ```c++ #include <iostream> using namespace std; int main() { int arr[10]; // 定义一个长度为10的整型数组 cout << "请输入10个整数:"; for (int i = 0; i < 10; i++) { cin >> arr[i]; // 从键盘输入整数并存储到数组 } // 接下来,我们需要对这10个整数进行排序 } ``` 接下来,我们需要选择一种排序算法来对输入的10个整数进行排序。常见的排序算法冒泡排序选择排序插入排序、希尔排序和快速排序等。 我们可以使用简单的冒泡排序算法来实现本题。冒泡排序的基本思想是从第一个元素开始,比较相邻的两个元素,如果前一个比后一个大,则交换它们的位置,重复这个过程,直到没有需要交换的元素为止。 下面是C++使用冒泡排序算法对数组进行排序的代码: ```c++ #include <iostream> using namespace std; int main() { int arr[10]; // 定义一个长度为10的整型数组 cout << "请输入10个整数:"; for (int i = 0; i < 10; i++) { cin >> arr[i]; // 从键盘输入整数并存储到数组 } // 冒泡排序 for (int i = 0; i < 9; i++) { for (int j = 0; j < 9 - i; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } // 输出排序后的结果 cout << "排序后的结果为:"; for (int i = 0; i < 10; i++) { cout << arr[i] << " "; } cout << endl; return 0; } ``` 最后,我们需要输出排序后的结果。需要注意的是,在输出结果时要加上适当的格式控制符,使结果更加清晰易读。 以上就是本题的解答过程,希望对大家学习算法和编程语言有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值