• 直接插入排序算法


    直接插入排序算法(用于理解)

    一个带排序数组    array[]     元素个数 size = array.length

    两个指针表示元素位置    int i 和 int j

      i 表示待排序元素的位置  ,   j 和 i 相等,为了表示已经排好序的元素位置

    快树排序就是把一个待排元素排进已排好的队列中,因此需要两层循环

    第一层循环 for( i = 1;i < size;i++)   i 表示待排元素的位置,从第二个元素开始所以 i 初始化为1

      循环内部设置 int temp = array[i] ;

      再设置 j = i;  因为这层循环每完成一次,已经排好序的元素就多一个。(为什么j=i 而不是 j = i-1 ,也可以那么赋值,看个人喜好。主要就是表述已经排序好的最后一个元素的位置)

    第二层循环为找到插入位置  while( j-1 >= 0 && array[j-1] > temp)  表示如果前面还有比 temp 小的元素就继续循环

      循环内部开始排序   array[j] = array[j-1];   将比 temp 大的那个元素与 temp 交换

      前面还有元素     j -- ;  前面还有没比较的元素

    到此算法完成

    void InsertSort(T* array, int n) {              
    	int i, j;                                   
    	T temp;                                      /
    	for (i = 1; i < n; i++) {                    //待排序元素位置
    		j = i;
    		temp = array[i];                         
    		while (j-1 >= 0 && temp < array[j - 1]) {       //寻找插入位置
    			array[j] = array[j - 1];             
    			j--;                                 
    		}
    		array[j] = temp;                       //也可以写在第二层循环内部。但可以分离出来,也算是提高计算性能。
    	} 
    

      

    总的来说就是 i 记录待排序的元素位置(第一层循环i++),需要将待排序元素与前一个元素比较,若i前还有比它小的元素则继续比较(第二层循环 j--)

    要熟记直接插入排序算法,因为其他插入排序也也会用到直接插入排序

  • 相关阅读:
    石油采集
    石油采集
    Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)
    数据分析电子商务B2C全流程_数据分析师
    数据分析电子商务B2C全流程_数据分析师
    数据挖掘中分类算法小结_数据分析师
    大数据分析或提升企业税务职能价值
    大数据可视化必须避免的三种常见错误
    大数据可视化必须避免的三种常见错误
    数据分析帮你预知商机
  • 原文地址:https://www.cnblogs.com/yinniora/p/11958543.html
Copyright © 2020-2023  润新知