zoukankan      html  css  js  c++  java
  • 重温排序算法

    因为复试时老师比较喜欢问排序算法那,所以 最近又把排序算法温习一遍,顺便写写代码。

    1直接插入排序。

    #include <stdio.h>
    
    void InsSort(int r[], int n)
    {
    	int i, j, temp;
    	for(i = 1; i < n; i++)
    	{
    		temp = r[i];
    		j = i - 1;
    		while(temp < r[j]) //寻找带插入的位置
    		{
    			r[j+1] = r[j];
    			j = j - 1;
    		}
    		r[j+1] = temp; //将数值插入已排序的队列中
    	}
    }
    
    void print(int r[], int n)
    {
    	int i;
    	for(i = 0; i < n; i++)
    		printf("%d ", r[i]);
    	puts("
    ");
    }
    
    int main()
    {
    	int a[10] = {3, 1, 5, 2, 7, 8, 9, 4, 6, 0};
    	printf("before sort:
    ");
    	print(a, 10);
    	InsSort(a, 10);
    	printf("sort after:
    ");
    	print(a, 10);
    	return 0;
    }
    

     

    如上述代码:temp变量用于放置带插入数值。

     直接插入算法的空间复杂度O(1),因为只用到了1个变量

    空间复杂度取决于待排序数列。最好的情况下移动次数 2 * (n-1), 最坏的情况下移动次数(n+4) * (n-1) / 2 , 平均复杂度n^2 / 4,因此时间复杂度位0(n^2)

  • 相关阅读:
    路由器的配置
    逻辑卷
    valn配置
    交换分区和虚拟内存
    TCP和UDP
    语法练习1
    oracl通用函数
    AOP
    oracle查询操作
    Oracle中的转换函数
  • 原文地址:https://www.cnblogs.com/hello-lijj/p/7236447.html
Copyright © 2011-2022 走看看