郑州高校网站建设服务公司,百度怎么做公司的网站,wordpress文字修改,专业网站优化关键词一:直接插入排序
1:思想
首先选择一个哨兵,我们默认将第一个数作为哨兵,随着循环的进行,我们一直将我们待插入数的前一个数作为哨兵然后就是插入的数与哨兵比较#xff0c;比哨兵小的话#xff0c;就将哨兵后移#xff0c;然后再与哨兵前面的数进行比较#xff0c;直到遇…一:直接插入排序
1:思想
首先选择一个哨兵,我们默认将第一个数作为哨兵,随着循环的进行,我们一直将我们待插入数的前一个数作为哨兵然后就是插入的数与哨兵比较比哨兵小的话就将哨兵后移然后再与哨兵前面的数进行比较直到遇见一个比起小的的树停止比较将要插入树插入到这。 大白话就是打扑克给扑克牌进行排序。
2:上码
public static void directInsertSort1(int arr[]) {for (int i 1; i arr.length; i) {int point arr[i];int j i-1;// i-1下标代表的元素就是下标while (j 0 arr[j] point) {//while循环直到找到合适的插入位置arr[j1] arr[j];//将比要插入数 大的数 往后移动j--;//继续往前寻找比起小的数}//当遇见比起小的数时候,跳出了循环,但是我们需要在其后面进行插入arr[j1] point;}
}3:时间复杂度
平均时间复杂度:O(n^2);
最好时间复杂度:O(n);
最坏时间复杂度:O(n^2);
二:希尔排序
1:算法思想
将整个待排序列分成若干个子序列(这个子序列是间隔增量元素形成的),然后再对这些子序列中的元素进行排序,然后下一轮我们再以将增量/2再进行划分子序列,我们再对子序列进行排序。
直到最后增量为1的时候来次大排序。这个在排序的时候,我们是用简单插入排序的;
这个希尔排序的话主要是对简单插入排序的优化,如果直接是简单插入排序的话, 效率在序列是基本有序的情况下是很高的,但是我们不能保证每次序列都是基本有序的
2:图示 3:上码
public static void shellSort1(int arr[]) {for (int gap arr.length / 2; gap 0; gap gap / 2) {for (int i gap; i arr.length; i) {int left_index i - gap;//待排子序列的前一个元素int point arr[i];//待插入元素while (left_index 0 arr[left_index] point) {arr[left_index gap] arr[left_index];left_index left_index - gap;}arr[left_indexgap] point;//当跳出while循环那就是遇见了一个//比point小的数那么我们就要在} //该数后面插入一个数(因为是在子序列中//所以加上gap )}}