Array Work C

906 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
906
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Array Work C

  1. 1. Работа с массивами Сортировка и поиск
  2. 2. Введение <ul><li>Заголовочный файл </li></ul><ul><ul><li>#include <stdlib.h> </li></ul></ul><ul><li>Функция сортировки </li></ul><ul><ul><li>void qsort ( void * array , size_t n , size_t size , int (* compare )( const void *, const void * ) ); </li></ul></ul><ul><li>Функция поиска </li></ul><ul><ul><li>void * bsearch ( const void * key , const void * array , size_t n , size_t size , int (* compare )(const void *, const void *)); </li></ul></ul>
  3. 3. Пример сортировки массива <ul><li>Массив </li></ul><ul><ul><li>0-327 </li></ul></ul><ul><li>Сортировка по убыванию </li></ul><ul><li>Сортировка по возрастанию </li></ul>
  4. 4. Использование qsort <ul><li>void out(int *p, int size) { for(int *p1=p;p1<p+size;++p1) printf(&quot;Элемент массива: %d &quot;,*p1); } </li></ul><ul><li>int sortf1(void const *p1, void const *p2) { int *i1=(int *)p1; int *i2=(int *)p2; return (*i1)-(*i2); } </li></ul><ul><li>int sortf2(void const *p1, void const *p2) { int *i1=(int *)p1; int *i2=(int *)p2; return (*i2)-(*i1); } </li></ul>
  5. 5. Использование qsort <ul><li>int _tmain(int argc, _TCHAR* argv[]) { int arr[10]; setlocale(LC_ALL,&quot;.1251&quot;); for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i) arr[i]=rand()/100; out(arr,sizeof(arr)/sizeof(arr[0])); qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]),sortf1); printf(&quot; Сортировка по возрастанию n&quot;); out(arr,sizeof(arr)/sizeof(arr[0])); qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]),sortf2); printf(&quot; Сортировка по убыванию n&quot;); out(arr,sizeof(arr)/sizeof(arr[0])); return 0; } </li></ul>
  6. 6. Результат выполнения программы
  7. 7. Использование bsearch <ul><li>void out(int *p, int size) { for(int *p1=p;p1<p+size;++p1) printf(&quot;Элемент массива: %d &quot;,*p1); } </li></ul><ul><li>int sortf1(void const *p1, void const *p2) { int *i1=(int *)p1; int *i2=(int *)p2; return (*i1)-(*i2); } </li></ul>
  8. 8. Использование bsearch ( продолжение )‏ <ul><li>int _tmain(int argc, _TCHAR* argv[]) { int arr[10]; setlocale(LC_ALL,&quot;.1251&quot;); for(int i=0;i<sizeof(arr)/sizeof(arr[0]);++i) arr[i]=rand()/100; qsort(arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]),sortf1); int i=63; int *p=(int *)bsearch(&i, arr, sizeof(arr)/sizeof(arr[0]), sizeof(arr[0]), sortf1); if(p) printf(&quot; Значение найдено n&quot;); else printf(&quot; Значение не найдено n&quot;); return 0; } </li></ul>
  9. 9. Результат выполнения программы
  10. 10. Вопросы e-mail: a.bovanenko@gmail.com Конец

×