数据结构排序部分整理

数据结构排序部分整理,第1张

插入排序
  1. 思路:从第二个元素开始,将之前的元素分别于当前进行比较,如果比当前元素大,那就将当这个元素向后移动一个位置。

    重复执行n-1趟。

  2. 时间复杂度:O()。

    当待排序序列逆序时,时间复杂度最差:每趟比较并移动i(1~n-1)个元素,进行n-1趟,1+2+…+n-1=n(n-1)/2。

    当待排序序列基本有序时,时间复杂度最小为O(n):每趟只需要比较1次,共进行n-1趟,1+1+…+1=n-1。

  3. 空间复杂度:O(1)。

    插入排序是在原有数组的基础上进行的,排序所需要新增的空间与待排序序列的元素个数无关。

  4. 代码实现:
    #include
    int main() {
    	int i,j, t, arr[10] = {21,45,76,68,54,89,94,14,37,5};
    	for (i = 1; i < 10; i++) {
    		t = arr[i];
    		j = i - 1;
    		while (j >= 0 && arr[j] > t) {
    			arr[j + 1] = arr[j--];
    		}
    		arr[j + 1] =t;
    	}
    
    	for (i = 0; i < 10; i++) {
    		printf("%d ", arr[i]);
    	}
    
    	return 0;
    }

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/662308.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-18
下一篇2022-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存