活动地址:CSDN21天学习挑战赛
怕什么真理无穷,进一步有一份的欢喜。
1,机缘
读到研一了,暑假假期打开私信发现这个挑战赛就鼓起勇气参加了。
2,期待的收获
A, 本人在华南理工大学攻读专硕,目前研究方向是图像恢复,从事深度学习相关工作,目标是从事Java后端开发。
B, 期待您的反馈,如果有什么不对的地方,欢迎指正!
C, 期待认识志同道合的领域同行或技术交流。
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
直接选择排序的又称为简单选择排序,整个过程是每一趟都将无序区中的所有元素进行逐一比较,找到最小的元素,与无序区中的首个元素进行交换,然后有序区长度+1,无序区-1。重复上述步骤,直到所有元素都排列好。
简单易于实现,空间复杂度低,只涉及到元素间的交换,不用引入其他变量,空间复杂度为O(1)
时间复杂度高,因为是for循环的嵌套,并且是逐一比较,时间复杂度为O(n^2)
✍️ 算法实现
public class SelectSort {
public static void main(String[] args) {
// input data
int[] a = {11,34,20,10,12,35,41,32,43,14};
// 调用选择排序
sort(a);
// 查看排序结果
for (int data : a){
System.out.print(data + "\t");
}
}
private static void sort(int[] a){
// 外层循环用于控制循环的趟数
for (int i = 0;i < a.length - 1;i++){
int k = i;
// 内层循环的作用是在无序区中选出最小的元素并记录
for (int j = i + 1;j < a.length;j++){
if (a[j] < a[k]) {
k = j;
}
}
// 如果本轮选出的最小元素没有在对应的位置上则交换
if (k != i){
int tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
}
}
如果觉得对你有帮助的话:
点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!