Consider the following k# using the cms.News doctype in the Corporate example site for inspiration. It can be placed in a static text web part.
{%
MyNews = Documents["/News"].Children.ClassNames("CMS.News").OrderBy("NewsTitle").WithAllData;
MyLetter = "first";
foreach(MyNewsItem in MyNews) {
if (MyNewsItem.NewsTitle.Substring(0,1) != MyLetter) {
println((MyLetter == "first") ? "<h2>" + MyNewsItem.NewsTitle.Substring(0,1) + "</h2><ul>" : "</ul><h2>" + MyNewsItem.NewsTitle.Substring(0,1) + "</h2><ul>");
MyLetter = MyNewsItem.NewsTitle.Substring(0,1);
}
println("<li>" + MyNewsItem.NewsTitle + "</li>");
}
println("</ul>");
%}
That will produce the following output...
<h2>A</h2>
<ul>
<li>Apple iPad 2 In Stock</li>
</ul>
<h2>C</h2>
<ul>
<li>Community Website Section</li>
<li>Company Growth Exceeds Expectations</li>
</ul>
<h2>N</h2>
<ul>
<li>New Consulting Services</li>
</ul>