【改良插入排序】

来源:http://www.cnblogs.com/libra-yong/archive/2017/02/01/6360202.html
-Advertisement-
Play Games

/* 說明: 插入排序法由未排序的後半部分前端取出一個值,插入已排序前半部分的適當位置,概念簡單但速度不快。 排序要加快的基本原則之一,是讓後一次的排序進行時,儘量利用前一次排序後的結果,以加快排序的速度,Shell排序法即是基於此一概念來改良 插入排序法。 解法: 略 */ #include #i... ...


/*
說明:
插入排序法由未排序的後半部分前端取出一個值,插入已排序前半部分的適當位置,概念簡單但速度不快。
排序要加快的基本原則之一,是讓後一次的排序進行時,儘量利用前一次排序後的結果,以加快排序的速度,Shell排序法即是基於此一概念來改良
插入排序法。

解法:
略 
*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define MAX 10
#define SWAP(x, y) {int t; t = x; x = y; y = t;}

void shellsort(int[]);

int main(void){
    int number[MAX] = {0};
    int i; 
    
    srand(time(NULL));
    
    printf("排序前: \n");
    for(i = 0; i < MAX; i++){
        number[i] = rand() % 100;
        printf("%d ", number[i]);
    }  
    
    shellsort(number);
     
//    system("pause");
    return 0;
}

void shellsort(int number[]){
    int i, j, k, gap, t;
    
    gap = MAX / 2;
    
    printf("\n排序後: \n");
    while(gap > 0){
        for(k = 0; k < gap; k++){
            for(i = k + gap; i < MAX; i += gap){
                for(j = i - gap; j >= k; j -= gap){
                    if(number[j] > number[j + gap]){
                        SWAP(number[j], number[j + gap]);
                    }
                    else{
                        break;
                    }
                } 
            }
        }
        
        printf("\n gap = %d: ", gap);
        for(i = 0; i < MAX; i++){
            printf("%d ", number[i]);
        }
        printf("\n");
        
        gap /= 2;
    }
} 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上一節我們介紹了Iteratee。它的功能是消耗從一些數據源推送過來的數據元素,不同的數據消耗方式代表了不同功能的Iteratee。所謂的數據源就是我們這節要討論的Enumerator。Enumerator是一種數據源:它會根據下游數據消耗方(Iteratee)的具體狀態主動向下推送數據元素。我們 ...
  • 3196: Tyvj 1730 二逼平衡樹 Description 您需要寫一種數據結構(可參考題目標題),來維護一個有序數列,其中需要提供以下操作:1.查詢k在區間內的排名2.查詢區間內排名為k的值3.修改某一位值上的數值4.查詢k在區間內的前驅(前驅定義為小於x,且最大的數)5.查詢k在區間內的 ...
  • 安裝篇 第一步:配置防火牆(預設情況下,埠80和3306是拒絕訪問的,在防火牆上進行配置): vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下兩句) -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 ...
  • ​byte: java中最小的數據類型。1位元組/8位。-128(2^7)~127(2^7-1),預設值0。 short: 短整型,2位元組/16位,取值範圍-32768(--2^15)~32767(2^15-1),預設值0 int: 整型,4位元組/32位,取值範圍-2147483648(-2^31)~ ...
  • C++14 SFINAE 解引用迭代器 原問題:編寫函數f(r),若r為迭代器,則返回f(*r),否則返回r。 摘要: 問題: 什麼是迭代器? 迭代器是c++中的一個概念,若類型It滿足以下條件,則It為迭代器類型 可拷貝構造(CopyConstructible) 可拷貝賦值(CopyAssigna ...
  • 前幾天用Python的Bottle框架寫個小web程式,在進行Ajax交互之時,前端則先用 JSON.stringify 來將類序列化,然後用escape() 函數將其編碼,確保傳輸正確。 再基本上配合上Jquery的$.ajax應該就可以了,可能是經驗不足,即使編碼之後的數據依然在 Python ...
  • 很多剛剛接觸編程的人都不知道怎麼下手編寫程式,特別是學習了新的知識點,不知道有什麼用,那麼本文將以簡單的存儲結構及簡單的運算,條件語句,分支語句,迴圈語句結合,帶來一個雙人對戰版五子棋,這是一個簡單的模型,實現了五子棋最最基本的功能,還有好多地方需要補全,如邊界問題,設計問題,游戲邏輯問題,希望讀者... ...
  • MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...