今天學習了歸併排序和sort函式的簡單運用,感覺sort函式真的是無比的神奇,能加各種神奇的東西,然後進行一些排序練習
歸併排序基本**
#include
using namespace std;
void
merge
(int *data, int start, int end, int *result)
while
(i <= mid)
while
(j <= end)
for(int i =
0; i < k; i++
) data[start + i]
= result[i];}
}int main()
; int result[10]
;merge
(data,0,
4, result)
;for
(int i =
0; i <
5; i++
) cout << result[i]
<<
" ";
system
("pause");
return0;
}
這道題用了sort函式和歸併兩種方法,歸併函式比較難理解,寫下**,以後忘了方便找。歸併重要還是要理解遞迴的呼叫。
**如下:
#include
#include
using namespace std;
/*void merge(int *data, int start, int end, int *result)//歸併
while (i <= mid)
while (j <= end)
for (int i = 0; i < k; i++)
data[start + i] = result[i]; }}
int result[110];*/
int a[
110]
;int main()
}}/*for (int i = 0; i < n; i += 2)//歸併
這道題就是排序和檢索
**如下:
#include
#include
using namespace std;
int a[
10010];
int main()
}if(find)
cout << b <<
" found at "
<< index << endl;
else
cout << b <<
" not found"
<< endl;
} x++;}
system
("pause");
return0;
}
這道題就是sort函式的運用,但是可能會超時,所以運用printf輸出,printf比cout速度更快。還有cin的優化 std:ios::sync_with_stdio(false);
加入這行**速度會和scanf差不多。
**如下:
#include
#include
#include
using namespace std;
int a[
1000000];
int main()
}system
("pause");
return0;
}
這道題是判斷所給資料的排序是否對,以及是否穩定。所以必須找到一種穩定的排序方式。剛開始想到氣泡排序,但是卻會超時。最後用了sort函式的排序sort(s,s+n,cmp);
**如下:
#include
#include
#include
using namespace std;
struct s
s1[310
],s2[
310]
;int cmp
(s a,
s b)
int main()
for(int i =
0; i <
n; i++
)sort
(s1, s1 +
n, cmp)
; bool stable =
false
, answer =
false
;for
(int i =
0; i <
n; i++)}
if(!answer)}}
if(answer)
else
else
cout <<
"right"
<< endl;}}
system
("pause");
return0;
}
這道題分為幾種方式的排序,實際就是sort函式排序的運用。
**如下:中間還有氣泡排序的寫法
#include
#include
#include
using namespace std;
struct s
s[100000];
bool cmp1
(s x,
s y)
bool cmp2
(s x,
s y)
bool c***
(s x,
s y)
/*void first(s *s,int *a,int n)
} }}*//*void second(s *s, int *a, int n)
if (s[j].s2 == s[j + 1].s2)
}} }
}*//*void third(s *s, int *a, int n)
if (s[j].s2 == s[j + 1].s2)
}} }
}*///int a[100000];
int main()
return0;
}
今天做了這幾道題目感覺學到了不少,了解了遞迴和sort函式的運用,算是排序勉強入門吧,還需繼續努力。排序重要還是要理解原理,還要回靈活運用。 演算法整理 排序(歸併和快排)
趁找工作之際,著手對演算法進行相關學習和整理,便於自己複習鞏固,也以此來督促自己進行演算法的研究學習。通過對演算法的整理,一方面希望對於自己有所提高,另一方面,也希望提高自己的書面表達能力,文中有所不正確的地方,望批評指出,多謝。對於演算法學習,從簡單到複雜。今天主要整理一下排序相關的演算法。對於排...
歸併和快速排序思想的延伸
前面學習了歸併和快速排序演算法,現在來了解歸併和快速排序演算法背後的演算法思想 分治思想,並對歸併和快速排序進行擴充套件,解決經典演算法問題 逆序對和第k大的演算法問題 顧名思義,分而治之,就是將原問題,分割成同等結構的子問題,之後將子問題逐一解決後,原問題也就得到了解決。對於乙個長度為n的整數序列...
快速 歸併和基數排序
快速排序 public class quicksort while arr r pivot if l r temp arr l arr l arr r arr r temp if arr l pivot if arr r pivot if l r if leftif right l public c...