Добрый вечер, участники форума!
И это снова я, если вы меня не забыли  
 На этот раз задача вывести k-ый по возрастанию элемент массива.
Сортировать нельзя, менять массив нельзя, заводить новый - правильно, нельзя. Нужно исхитриться.
Загвоздка в том, что, например,в массиве 1, 2, 1, 3 - второй по возрастанию элемент - 1. Т.е. нужен второй элемент не по значению, а по позиции в отсортированном массиве. (А сортировать нельзя).
Мой код разумеется очень плохой, ну хоть идея какая-то.
Написана функция:
- int k_item(int a[],int k) 
 - { 
 -     int item=0; 
 -     int j=0; 
 -     int i=0; 
 -     int count=0; 
 -     int min,max,prev_min; 
 -     min=MIN(a); 
 -      
 -         while(count<k) 
 -     { 
 -         prev_min=min;   
 -  
 -             while(i<10) //Эта штука на случай повторения элементов 
 -             { 
 -                 if(a[i]==min) 
 -                 { 
 -                     count++; 
 -  
 -                     if(count>=k) 
 -                     { 
 -                         break; 
 -                     } 
 -                 } 
 -                 i++; 
 -             } 
 -  
 -             if(count>=k)     
 -         { 
 -             break; 
 -         } 
 -         min=MIN_next(a,prev_min);    
 -         count++; 
 -     } 
 -      
 -     return min; 
 - } 
 
  И две подфункции MIN - ищет минимум, и MIN_next ищет минимум строго больше некоторого числа.
На счет первой прошу не сомневаться  

  А вот вторая:
MIN_next:
- int MIN_next(int a[],int E) 
 - { 
 -  
 - int ind=0; 
 - int min; 
 -  
 - while(a[ind]<=E)  
 - { 
 -     ind++; 
 - } 
 -  
 - min=a[ind]; 
 -  
 - ind=0; 
 -  
 -  while(ind<10) 
 -     { 
 -         if((a[ind]<min)&&(a[ind]>E)) 
 -         { 
 -         min=a[ind]; 
 -         } 
 -          
 -         ind++; 
 -     } 
 -  
 -  return min; 
 - } 
 
  В связи с этим всем у меня два вопроса:
1)Как проще-то надо было сделать?
2)Что бы доработать в самой первой функции, а то она ж не работает такая этакая.