Java基础——选择排序、冒泡排序】的更多相关文章

1.选择排序 原理是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 代码演示: public class Test3 { public static void main(String[] args) { int[] arr = { 3, 9, 81, 8, 5, 10 }; selectSort(arr); print(arr); } /* 选择排序:原理是第i个元素和剩余元素的比较次数 */ public static void sel…
1 选择排序  原理:a 将数组中的每个元素,与第一个元素比较          如果这个元素小于第一个元素, 就将这个         两个元素交换.       b 每轮使用a的规则, 可以选择出一个最小元素        放到第一个位置.       c 经过n-1轮比较完成排序   简单说: 每轮选择最小的放到前面.        2 冒泡排序  原理: a 逐一比较数组中相邻的两个元素, 如果后面         的数字小于前面的数字, 就交换先后元素.       b 经过一个轮次的…
本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 int c[] = new int [8]; int[] d = {3,4,5,67}; int[] e = new int[] {3,4,5}; System.out.println(d[2]); } 例题:产生1到100之间所有奇数组成的数组并输出.要求每10个一行输出 public clas…
每一趟从待排序的数据元素中选出最小(或最大的)一个元素, 顺序放在已排好的序的数列的最后,直到全部待排序的数据元素排完. 选择排序是不稳定的排序方法. 选择排序的时间复杂度为 O(n^2). 第一次需要检查n个元素,但随后检查的元素数依次为n - 1, n – 2, …, 2和1.平均每次检查的元素数为1/2 * n, 因此运行时间为 n * 1/2 * n,简单地写作 O(n^2). 例: 34,4,56,17,90,65 4,34,56,17,90,65 第一轮 5次 4,17,56,34,…
Java基础--选择语句     1. if语句 规律: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   第一种: if(表达式) 语句;//多个语句可用{} 例如: int m=1; if(m==1) System.out.println("Hello, world!"); 编译结果: Hello, world!   第二种: if(表达式) 语句; else 语句; 例如: int m=2; if(m==1) System.out.println…
Java基础--选择语句       1. if语句; 规则: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   格式一: if(表达式) 语句;//多个语句可用{} 例如: int m=1; if(m==1) System.out.println("Hello, world!"); 编译结果: Hello, world!   格式二: if(表达式) 语句; else 语句; 例如: int m=2; if(m==1) System.out.prin…
一:冒泡法排序  //冒泡排序 注:从小到大排   //特点:效率低,实现简单  //思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素. 这只是冒泡排序的一种,当然也可以从后往前排. 算法步骤 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数…
//冒泡排序 public class demo{ public static void main(String[] args) { int[] sum={2,9,10,1,5,88}; System.out.println("==============排序前=========="); for(int i=0;i<6;i++){ System.out.print(sum[i]+"\t"); } for(int j=1;j<=sum.length-1;j…
一直到大四才开始写自己的第一篇博客,说来实在有点羞愧.今天写了关于排序的算法题,有插入排序,冒泡排序,选择排序,以下贴上用JAVA实现的代码: public class test5 { public static void print(int []array) //输出数组方法 { for(int i=0;i<array.length;i++) System.out.print(" "+array[i]); } public static void selectsort(int…
//排序 选择排序 数组中每个元素都进行比较 public class Test { public static void main(String[] args) { int[] arr = {12,69,852,25,89,588}; selectS(arr); printS(arr); } public static void printS(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]…
1 问题描述 给定一个可排序的n元素序列(例如,数字.字符和字符串),将它们按照非降序方式重新排列. 2 解决方案 2.1 选择排序原理简介 选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置:然后,我们从第二个元素开始扫描剩下的n-1个元素,找到这n-1个元素中的最小元素,将最小元素和第二个元素交换位置:然后从第三个元素开始扫描-一般来说,就是从第i个元素开始扫描,找到第n-i+1个元素中的最小元素,将最小元素与第i个元…
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2):空间复杂度 O(1) 算法改进:每次对比,都是为了将最小的值放到第一位,所以可以一比到底,找出最小值,直接放到第一位,省去无意义的调换移动操作…
选择排序思想就是选出最小或最大的数与第一个数交换,然后在剩下的数列中重复完成该动作. package Sort; import java.util.Arrays; public class SelectionSort { public static int selectMinKey(int[] list, int beginIdx) { int idx = beginIdx; int temp = list[beginIdx]; for(int i = beginIdx; i < list.le…
----  冒泡排序 方法: 1.每次比较相邻的两个数 2. 小的交换在前面 3.每轮结束后最大的数交换到最后 代码实现: /* * 冒泡排序 * */ public class SortNum { public static void main(String[] args) { int[] scores={16,25,9,90,23}; for (int i = 0; i < scores.length -1 ; i++) { for (int j = 0; j < scores.lengt…
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setText()方法清空文本域: 创建一个整型一维数组,分配长度为10的空间: 初始化数组元素,使用Random类的nextInt()方法生成50以内的随机数,使用JTextArea类的append()方法把数组元素显示在文本域控件中: 点击"排序"按钮,使用JTextArea类的setText()…
选择排序: 原理:依次从数组最左边取一个元素,与之后的位置上的元素比較,假设大于/小于(取决于须要升序排还是降序排).则保存较大/较小元素的索引 当一轮比較后,将保存的较大/较小元素的索引与 这轮開始比較的左边元素置换 改进了冒泡排序,交换次数从O(N^2)降低到O(N), 而比較次数还是O(N^2) .实际上交换次数最大就等于N-1次 /** * 选择排序 * 比較次数 O(N^2), 交换O(N) * @author stone * */ public class SelectionSor…
#include<iostream> #include<cstdio> #include<bits/stdc++.h> using namespace std; void selectsort(int a[],int n){//选择排序(不知道为什麽好像是错的反正我也不用233333) ;i<=n-;i++){ int k=i; ;j<=n;j++){ if(a[j]<a[k]) k=j; if(k!=i){ int t=a[i]; a[i]=a[k]…
选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序方…
最近想练一练Java的算法,然后碰到LeetCode上一道从排序数组删除重复项的小题,刚开始没看到是从排序数组中,就乱写,其实要是排序树组,就比乱序的感觉上好写多了.然后就想回顾下冒泡法对数组排序,凭感觉写的,写到最后成了选择排序……呃…… 简单对冒泡法和选择排序法介绍一下. 冒泡法是两两比较,两两交换,逐渐的把最大的弄到最后(最前),最小的弄到最前(最后).网上有很多例子. 而选择排序法是每次都选出最小的放到最前(最后),然后再从剩下的数里面选出里面最小的再放到第二位(倒数第二位). publ…
//选择排序 void test2(int a[],int len){ //每次找出一个最小值,最小值依次与原数组交换位置,通过下标来完成交换,最小值下标每次都在变,变量存储 //    假如第一个是最小值 int mine=0; int teamp=0; //    外层负责趟数 for (int i=0; i<len; i++) { //    假如每一次的第一个是最小值 mine=i; //    内层负责寻找每趟的最小值 //        每次起始比较值都不一样所以j=i+1,改变次数…
''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums)-1): for j in range(i+1,len(nums)): if nums[i] > nums[j]: # max = nums[i] # nums[i] = nums[j] # nums[j] = max #python有更好的写法 nums[i],nums[j] = nums[j]…
选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中. /*直接选择排序*/ #include <iostream> using namespace std; void swapp(int &a,int &b) { int temp = a; a = b; b = temp; } int main() { int a[]={5,4,10,20,12,3,2,1,3,5,6,56,43,32}; int size = sizeof(a)/sizeof(int)…
//直接选择排序 #include<stdio.h> void SelectionSort(int arr[],int len) { int i,j; int k,min; int temp; ;i<len-;i++) { min=arr[i]; //每趟排序都把无序区第一个数设置为最小 k=i; ;j<len;j++) { if(arr[j]<min) { min=arr[j]; k=j; //记录下此次最小数索引 } } if(k!=i) //如果上面的if执行过 { /…
(转载出处) 选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i…n-1] 中找出其中的最小值,然后将找到的最小值与 i 指向的值进行交换.因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序. 选择排序是一种简单直观的排序方法,每次寻找序列中的最小值,然后放在最末尾的位置. 举个实例来看看: 初始: [38, 17, 16, 16, 7, 31, 39, 32, 2, 11] i = 0: [2 , 17, 16, 16,…
 //选择排序(Select Sorting)也是一种简单的排序方法.它的基本思想是:第一次从R[0]-R[n-1]中选取最小值,与R[0]交换,第二次从R[1]-R[n-1]中选取最小值,与R[1]交换,第三次从R[2]-R[n-1]中选取最小值,与R[2]交换,...,第i次从R[i-1]-R[n-1]中选取最小值,与R[i-1]交换,...,第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列. public st…
1.首先用一张图来描述选择排序的具体过程 2.废话不多说,上代码 # 1.定义函数:选择排序 def choose_sort(list): list_len = len(list) for i in range(0, list_len): for j in range(i + 1, list_len): if list[i] > list[j]: list[i], list[j] = list[j], list[i] # 2.创建列表测试 list1 = [3, 6, 1, 8, 5, -20,…
public class SelectSort { public static void main(String[] args) { /** * @author JadeXu * @// TODO: 2020/12/4 选择排序 * @思路 * 每一层找最小值,放在i位,i从0开始递增,最后找到剩两位数时就只要走一层,所以要走(数组的长度-1)层 * 先找最小值,从i开始的每一位数都要和最小值比较,所以要走(数组的长度)层 * 每走一层,minIndex初始化值为每一层的层数-1(即i),因为索…
接触冒泡算法还是大一了,学习C语言的冒泡算法.现在唯一记得就是冒泡与选择了.出来刚刚工作的时候觉的算法基本没撒用处,现在发现这些都是很好的基础.因此自己也准备重新拾起这些知识. 冒泡排序 泡排序是一种很简单的排序的算法,根据名字就可以知道这一个过程,一点点的把大的数移到顶部. 时间复杂度 若文件的初始状态是正序的,一趟扫描即可完成排序.所需的关键字比较次数 和记录移动次数 均达到最小值:  ,  .所以,冒泡排序最好的时间复杂度为 . 若初始文件是反序的,需要进行 趟排序.每趟排序要进行 次关键…
---------    流程控制 ------     流程图 ------   基本的  if  选择结构 import java.util.Scanner; public class GetPrize { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("输入张浩的Java成绩: "); //提示要输入Java成绩 int score…
冒泡排序的基本思想: 通过对待排序序列从前到后(从下标小的元素开始),依次比较相邻位置的元素的值,若发现与给定的次序冲突,则交换位置(假设数值大的数放在序列的后面),使数值较大的元素逐渐从前移动到后部,就像冒泡一样. 对于冒泡排序,我们可以对它进行一定的优化: 在排序的过程中,每个元素都不断的接近自己的位置,当在一次排序中,我们发现,使用冒泡排序之后,该序列的任何两个个元素都没有进行交换,这个时候说明该序列已经有序,我们就不需要继续进行排序算法了,此时我们推出该排序算法.如果要执行这个优化,我们…