句子中的單詞逆序輸出和歸併排序

2021-07-02 20:16:41 字數 904 閱讀 4639

#include#includeusing namespace std;

void sentencereverse(string s) //句子中的單詞逆序輸出 }

if (end>=0)

for (int i = front + 1; i <= end; i++) //碰到分割符則輸出單詞

cout << s[i];

}void sentencereverse2(string sentence) //逆序輸出句中單詞

} for (int i = front + 1; i <= end; i++)

cout << sentence[i]; //將最後乙個單詞輸出

}void merge(int *data, int start, int mid, int end) //將從開始到結束的陣列從mid部分成兩部分,將兩部分按從大到小拼成乙個陣列

} while (jdata[k++] = right[j++];

while (i < len1)

data[k++] = left[i++];

deleteleft; //結束釋放掉左右陣列的空間

deleteright;

}void mergesort(int *data, int start,int end)

}void showdata(int *data, int len) //顯示陣列的元素

}int main()

; int len = sizeof(data) / sizeof(int);

mergesort(data, 0, len - 1);

showdata(data, len);

return 0;

}

歸併排序和逆序數

歸併排序通過分治的思想可以在nlogn的時間內完成陣列的排序 同時在歸併排序的歸併過程中,又可以通過排序內部的細節獲得原陣列的逆序數,見注釋 直接上 了 void merge int a,int start,int len,int size int l 0,r 0 int mid start len...

陣列中的逆序對(歸併排序)

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。在歸併排序的一次merge中,r j 1 法一 統計i的逆序數 int merge int a,int p,int q,int r int n1 q p 1,n2 r q in...

陣列中的逆序對(歸併排序)

題目 陣列中的逆序對 思路 典型的歸併排序 很好的題目 這是乙個歸併排序的合併過程,主要考慮合併兩個有序序列時,計算逆序對的個數!對於兩個公升序序列,設定兩個下標 前下標和後下標 初始化為前序列第乙個數字的下標和後序列第乙個數字的下標。如果前下標對應的值大於後下標對應的值,則有 前序列剩下的長度 個...