快速排序法

2021-06-27 16:47:35 字數 1513 閱讀 1416

#include "stdafx.h"

#include "vos.h"

#define table_mid_machine_name     "midmachine"

#define table_midmach_colname_id   "id"

#define table_midmach_colname_ip   "ip"

#define table_midmach_active_flag  "activeflag"

#define table_midmach_colname_mach "name"

#define make_cmdseq(stobj) ((stobj.ulcommandid << 8) | stobj.ulseq)

//快速排序法

void qsort(st_oamreg_map a, int low, int high)

int first = low;

int last = high;

int keyvalue = 0;

int lastvalue = 0;

int firstvalue = 0;

st_oamreg_map key;

memset(&key, 0, sizeof(st_oamreg_map));

memcpy(&key, &a[first], sizeof(st_oamreg_map));

keyvalue = make_cmdseq(key);

while (first < last)

memcpy(&a[first], &key, sizeof(st_oamreg_map));

for (ulindex = 0; ulindex < g_maxoamregnum; ulindex++)

if ((0 == g_stoamregmap[ulindex].ulcommandid)

&& (0 == g_stoamregmap[ulindex].uldstpid)

&& (0 == g_stoamregmap[ulindex].ulseq))

}return -1;

}//!!!這裡可以進行2級排序操作,但本註冊功能只在本模組使用,因此簡單處理,不進行排序操作了

//!!!維護該模組的同事需要特別注意,註冊時務必保證排序正確

//!!!先按照命令排序,然後序號排序(要求從小到大) 

qsort(g_stoamregmap, 0, ulnum-1);

return ulresult;

}//!!!注意以下陣列註冊必須保證順序,否則執行中時序將會出錯!!!

//!!!順序為: 先按命令字,再按序號(從0開始,必須從小到大)!!!

static const st_oamreg_map s_oamreg = ,,

,//恢復,,

,,//停止  

,  ,,,

,};for (ulindex = 0; ulindex < g_maxoamregnum; ulindex++)

return vos_ok;

快速排序法

一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...

快速排序法

快速排序法思想 在待排序的n個資料中取第乙個數字為基準數,陣列最前面放乙個標桿,陣列最後麵放乙個標桿,通過基準數和標桿 i,j 出的數進行比較,實現每次排序完時候,共三組數,不大於基準數 基準數 不小於基準數 舉例說明 5 i 4,6,8,3,9,2 j 基準數5 標桿 i 指向5位置,標桿 j 指...

快速排序法

package com.sort 快排類 思路 分割和遞迴 分割 將比基準數 第乙個 小的放左邊,大的放右邊 遞迴 快排方法下呼叫分割,再快排。不斷遞迴 author maggie public class quicksort 第一種分割方法 分割 將比基準數 第乙個 小的放左邊,大的放右邊 par...