冒泡排序:从左到右相邻两个数依次比较,大的换后边,小的换前边。
假如有10个数字,
第一轮需要换9次换完后,最大在最右边,
第二轮需要换8次(因为最后一个确定最大不用换),依旧最大在最右边。
选择排序:假设,第一个值是最小值,把他的下标赋给min,然后从左到右相邻的两个数依次比较,每次比较后,把
最小的值得下标赋给min,然后判断当前假设的最小值的下标和比较后的最小值得下标是否一致,如果不一致,那么
交换两个位置的值(不是交换下标,下标不变,只是把最小值放在了最左边。)
每一轮比较都假设最小值是第一个,
比如,第一轮,假设最小值是下标为0的值,如果最后下标不一致,就交换值,下标为0的就是最小的了。
第二轮,下标加1,那么,假设的下标为1的值是最小的。
插入排序:嵌套for循环,让外层的for循环控制,内部循环的最大比较次数。(假定此组数前边还有数,
同时排列好了,然后每次把一个数与前边的数比较,小的放左边,大的放右边,左边的数永远都是有序的。)
比如
第一轮;外循环把第一个值赋给第三方的一个变量,然后传给内部的下标值是1,那么内部循环,
让这个固定的第三方变量与他左边的每个值进行对比,如果遇到比他大的,然后交换值。
例子:
外部循环,第三方变量tem = a[1]
内部循环,如果遇到a[0]>tem,那么把a[1] = a[0], a[0] = tem;此时,在原始的数组中,第一轮比较后a[0]就会大于
a[1],
第二轮;外部的循环下标+1,把这个值赋给第三方的一个变量,然后传给内部的下标值是2,那么内部第
三方变量会让这个固定的第三方变量与他左边的每个值进行对比,小的放在左边。
依次,每轮都是这样,最后出结果;
个人见解;;;;;;(插入排序和冒泡排序区别,插入是对左边的每个值进行比较,每一轮的比较都会变少,冒泡是对右边的每个值进行比较!
每一轮的比较都会变多!!
)
个人见解;;;;;;(冒泡排序和插入排序是交换的值,对数组内的值进行操作!!!!!!选择排序则是先对下标进行筛选,然后对值进行操作)
快速排序:
假如有10个数字,
第一轮需要换9次换完后,最大在最右边,
第二轮需要换8次(因为最后一个确定最大不用换),依旧最大在最右边。
选择排序:假设,第一个值是最小值,把他的下标赋给min,然后从左到右相邻的两个数依次比较,每次比较后,把
最小的值得下标赋给min,然后判断当前假设的最小值的下标和比较后的最小值得下标是否一致,如果不一致,那么
交换两个位置的值(不是交换下标,下标不变,只是把最小值放在了最左边。)
每一轮比较都假设最小值是第一个,
比如,第一轮,假设最小值是下标为0的值,如果最后下标不一致,就交换值,下标为0的就是最小的了。
第二轮,下标加1,那么,假设的下标为1的值是最小的。
插入排序:嵌套for循环,让外层的for循环控制,内部循环的最大比较次数。(假定此组数前边还有数,
同时排列好了,然后每次把一个数与前边的数比较,小的放左边,大的放右边,左边的数永远都是有序的。)
比如
第一轮;外循环把第一个值赋给第三方的一个变量,然后传给内部的下标值是1,那么内部循环,
让这个固定的第三方变量与他左边的每个值进行对比,如果遇到比他大的,然后交换值。
例子:
外部循环,第三方变量tem = a[1]
内部循环,如果遇到a[0]>tem,那么把a[1] = a[0], a[0] = tem;此时,在原始的数组中,第一轮比较后a[0]就会大于
a[1],
第二轮;外部的循环下标+1,把这个值赋给第三方的一个变量,然后传给内部的下标值是2,那么内部第
三方变量会让这个固定的第三方变量与他左边的每个值进行对比,小的放在左边。
依次,每轮都是这样,最后出结果;
个人见解;;;;;;(插入排序和冒泡排序区别,插入是对左边的每个值进行比较,每一轮的比较都会变少,冒泡是对右边的每个值进行比较!
每一轮的比较都会变多!!
)
个人见解;;;;;;(冒泡排序和插入排序是交换的值,对数组内的值进行操作!!!!!!选择排序则是先对下标进行筛选,然后对值进行操作)
快速排序: